如何使用UIImagePickerController呈现ViewController

我试图展示一个ImagePicker ,并且在用户select一个图像之后,呈现一个图像编辑ViewController ,用户可以在其中操作图像,然后将编辑后的图像发送回原来的ViewController

题:

是否有一个标准或最佳实践方法,从初始ViewControlle开始,然后在另一个ViewController之后呈现ImagePicker进行图像编辑,然后将其全部显示在初始ViewController中,同时使转换看起来无缝?

下面的试用3中的build议是一个好的实践方法还是有一个更好的例子来说明如何实现这一点?

试试1。

我最初的想法是通过下面的代码以编程方式呈现ImagePicker ,然后在select图像之后进行图像编辑ViewController 。 但是这种方法似乎并不正确。 拾取图像后,我似乎无法使ImagePicker正确地继续到ViewController 。 (编辑ViewController显示了一堆“意外地发现零,而解包可选值”错误)。

  let imagePicker = MyImagePickerController() imagePicker.delegate = self imagePicker.sourceType = .PhotoLibrary imagePicker.allowsEditing = false imagePicker.modalTransitionStyle = UIModalTransitionStyle.CoverVertical self.presentViewController(imagePicker, animated: true, completion: nil) 

试试2。

我的第二个尝试是呈现一个图像编辑ViewController作为一个隐藏/透明之后立即加载的ImagePicker ,但这会导致一些空的背景闪烁。

试试3。

所以我遇到了这个build议,这是我第二次尝试使用窗口背景的变体,以显示当前ViewController的图像,这似乎是可能的。 http://xissburg.com/presenting-multiple-modal-view-controllers-at-once/

试试4。

我的另一个想法是创build一个单独的ViewControllerImagePicker处理一个ImagePicker ,然后通过接口构build器中的segues连接每个ViewController

你有没有像这样尝试,在你的第一个ViewController显示viewDidLoad上的select器没有呈现animation。

 let imagePicker = UIImagePickerController() imagePicker.delegate = self imagePicker.sourceType = .PhotoLibrary imagePicker.allowsEditing = false imagePicker.modalTransitionStyle = UIModalTransitionStyle.CoverVertical self.presentViewController(imagePicker, animated: false, completion: nil) 

从今起

 func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { if let image = info[UIImagePickerControllerOriginalImage] as? UIImage { } dismissViewControllerAnimated(true, completion: { //Present your custom editing controller also create `protocol/delegate` for getting editing image back. }) }