UIImageView不会更新照片后的新图像或从照片库中select图片

我试图在UIImageView中填充图像后,我可以拍照或从我的照片库中select一张图片。

这里是处理相机和照片库激活的代码:

@IBAction func activateCmera(_ sender: Any) { if (UIImagePickerController.isSourceTypeAvailable(.camera)) { let imagePicker = UIImagePickerController() imagePicker.delegate = self imagePicker.sourceType = .camera imagePicker.allowsEditing = false self.present(imagePicker, animated: true, completion: nil) } } @IBAction func activatePhotoLib(_ sender: Any) { if (UIImagePickerController.isSourceTypeAvailable(.photoLibrary)) { let imagePicker = UIImagePickerController() imagePicker.delegate = self imagePicker.sourceType = .photoLibrary imagePicker.allowsEditing = false self.present(imagePicker, animated: true, completion: nil) } } 

以下是在UIImageView中填充图像的代码:

 @IBOutlet weak var imageView: UIImageView! func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { let image = info[UIImagePickerControllerOriginalImage] as! UIImage self.imageView.contentMode = .scaleAspectFit self.imageView.image = image self.dismiss(animated: true, completion: nil); } 

目前,当我使用相机拍摄照片或从照片库中select图像后,我将其redirect到应用程序的初始视图,而不更新UIImageView空间。

任何帮助表示赞赏谢谢!

Swift 3您需要通过将下面的keys添加到您的plist来访问photoLibrary,并且您需要使用适当的delegate方法。

在这里输入图像说明

UIImagePickerControllerDelegateUINavigationControllerDelegate添加到您的class ,并将imagePicker delegate设置为viewDidLoad &Try below代码。

  let imagePicker = UIImagePickerController() @IBAction func activatePhotoLib(_ sender: UIButton) { if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.photoLibrary) { imagePicker.delegate = self imagePicker.sourceType = UIImagePickerControllerSourceType.photoLibrary; imagePicker.allowsEditing = false self.present(imagePicker, animated: true, completion: nil) } } func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { if let image = info[UIImagePickerControllerOriginalImage] as? UIImage { imageView.image = image } picker.dismiss(animated: true, completion: nil); } 

输出: updated

在这里输入图像说明

这似乎是与XCode未能解释imagePickerController函数语法已经改变(自Swift 3)有关的问题。 你会发现在networking上写这个function的两种方法。 您也可以在XCode中使用这两种方法而不会出现任何错误。 但是只有第二个才能正确地获得图像。

 (Option 1 - doesn't work, but XCode doesn't flag it): func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { } (Option 2 - this is the right syntax!): func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { } 

**你需要保存UIImagePickerController像全局对象,之后,你需要推动这个代码在你的行动function**

 @objc func getImage() { imagePicker.sourceType = UIImagePickerControllerSourceType.photoLibrary imagePicker.allowsEditing = false imagePicker.modalPresentationStyle = .overCurrentContext present(imagePicker, animated: true) } func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { if let image = info[UIImagePickerControllerOriginalImage] as? UIImage { imageView.image = image } self.dismiss(animated: true, completion: nil); }