2016-11-24 53 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) 
    } 
} 
相關問題