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
方法。
将UIImagePickerControllerDelegate
和UINavigationControllerDelegate
添加到您的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); }