如何选择即使在退出应用程序后仍会保留的图像



我需要帮助,请我有一个按钮..和UIImage没有图片的用户可以选择他想要的图片!用户完全退出应用后,用户选择的图像必须保持不变,这一点很重要。

我希望用户从图库中选择一张照片或拍照,然后他选择的图片将显示在个人资料图片上,即使在退出应用程序后也不会消失。数据将被保存我可以这样做吗?

    class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
    @IBOutlet var imageView: UIImageView!
    @IBOutlet var chooseBuuton: UIButton!
    var imagePicker = UIImagePickerController()


    func imagePickerController(picker: UIImagePickerController!, didFinishPickingImage image: UIImage!, editingInfo: NSDictionary!){
        self.dismiss(animated: true, completion: { () -> Void in
        })
        imageView.image = image
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }
    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
        dismiss(animated: true, completion: nil)
    }
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        let image = info[UIImagePickerControllerOriginalImage] as! UIImage
        imageView.image = image
        imageView.contentMode = .scaleAspectFill

        dismiss(animated: true, completion: nil)
    }
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        let controller = UIImagePickerController()
        controller.delegate = self
        controller.sourceType = .photoLibrary
        present(controller, animated: true, completion: nil)
    }
}
您需要

将图像保存在应用程序存储中,如用户默认值,文档目录或数据库(如果您在应用程序中使用(。

最好将图像保存到应用程序文档目录,可以使用以下方法保存图像:

func saveImage(image : UIImage, imageName: String){
        let documentDirectoryPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
        let fileURL = documentDirectoryPath.appendingPathComponent(imageName)
        if let data = UIImageJPEGRepresentation(image, 1.0),
            !FileManager.default.fileExists(atPath: fileURL.path) {
            do {
                try data.write(to: fileURL)
                print("Image saved")
            } catch {
                print("Image save error:", error)
            }
        }
    }

您可以通过以下函数获取图像:

func getImage(imageName: String) -> UIImage?{
        let documentDirectoryPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
        let fileURL = documentDirectoryPath.appendingPathComponent(imageName)
        let image = UIImage(contentsOfFile: fileURL.path)
        return image
    }

在您的UIImagePickerControllerDelegate委托方法调用函数saveImage图像和图像名称,以将图像永久保存在文档目录中:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    // Do your stuff here, then save image to document directory:
     saveImage(image:image, imageName: "profile.jpg")
    }

要在图像上显示图像查看从viewDidLoad函数中的文档目录中获取图像:

override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        if let image = getImage(imageName: "profile.jpg"){
            imageview.image = image
        }
    }

最新更新