2016-11-24 39 views
0

我正在尝试创建一个能够使用相机拍摄图像的应用程序,并将其加载到UIImageView中。当我重新启动应用程序时,我想将照片加载到UIImageView中,我该怎么做?如何将图像加载到iOS应用程序

拍照:

@IBOutlet weak var p2Image: UIImageView!  
@IBAction func p2takePhoto(_ sender: Any) { 

    let image = UIImagePickerController() 
    image.delegate = self 
    image.sourceType = UIImagePickerControllerSourceType.camera 
    image.allowsEditing = false 
    self.present(image, animated : true){} 

} 

拍照后,我显示与UIImageView照片并保存照片的路径:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
    if let image = info[UIImagePickerControllerOriginalImage] as? UIImage 
    { 
     p2Image.image = image 
     UserDefaults.standard.set(p2Image.image?.accessibilityPath, forKey: "p2ImagePath") 
    } 
    else 
    { 

    } 
    self.dismiss(animated: true, completion: nil) 
    } 

代码,以显示我的照片,每次我打开我的应用程序:

override func viewDidAppear(_ animated: Bool) { 
    if let x = UserDefaults.standard.object(forKey: "p2ImagePath") as? String 
    { 
     p2Image.image = x 
    } 

但它没有工作,甚至不能建立,它说

p2Image.image = X(不能指定类型的字符串值,键入的UIImage)

我缺少的东西?或者我使用错误的方法?

回答

0

在UserDefaults中存储图像是个坏主意;更好的解决办法来存储它on the disk

这里

if let x = UserDefaults.standard.object(forKey: "p2ImagePath") as? String 
{ 
    p2Image.image = x 
} 

你尝试的东西在路径“p2ImagePath”串转换,如果成功,将它设置为你的形象图。如果你想它来编译,投它,而不是UIImage的,但是,无论如何,你真正应该做的是存储的图像作为NSData的特定路径,并将其存储,而不是

编辑:

我已经错过了你accessabilityPath并认为你正在试图准确地存储在UserDefaults :) 图像的话,你可以尝试

if let x = UserDefaults.standard.object(forKey: "p2ImagePath") as? String 
{ 
    p2Image.image = UIImage(contentsOfFile: x) 
} 
+0

嗨解决那里,谢谢回复。我已经尝试过p2Image.image = UIImage(contentsOfFile:x)。它没有错误,我可以构建它,但重新启动后图像未加载到应用程序中。 –

+0

图像不显示是因为我使用模拟器? –

+0

我不确定,我从来没有用accessibilityPath这样的方法;尝试将它存储在磁盘上,而不是访问它。有链接回答,在那里描述如何做到这一点 –

0

我终于曾与

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 

    if let image = info[UIImagePickerControllerOriginalImage] as? UIImage 
    { 
     p2Image.image = image 
     let saveImage = p2Image.image 
     let imageData:NSData = UIImagePNGRepresentation(saveImage!)! as NSData 

     UserDefaults.standard.set(imageData, forKey: "keyp2Image") 
    } 
    else 
    { 
     //error message 
    } 
    self.dismiss(animated: true, completion: nil) 
} 


override func viewWillAppear(_ animated: Bool) { 


    if UserDefaults.standard.object(forKey: "keyp2Image") != nil 
    { 
    let data = UserDefaults.standard.object(forKey: "keyp2Image") as! NSData 
    p2Image.image = UIImage(data: data as Data) 
    } 
} 
相关问题