我正在尝试展示ImagePicker
,并在用户选择了图像后,在其中显示图像编辑ViewController
,用户可以在其中操作图像,然后将编辑后的图像发送回原始ViewController
。
问题:
是否有标准或最佳实践方法从初始ViewControlle开始,然后在另一个ViewController之后呈现ImagePicker进行成像编辑,然后将其全部显示在初始ViewController中,同时进行转换 看起来无缝?
下面的尝试3中的建议是一个好的练习方法还是有更好的例子来说明如何实现?
尝试1。
我最初的想法是通过以下代码以编程方式显示ImagePicker
,然后在选择图像后进行图像编辑ViewController
。但这种方法似乎并不正确。在挑选图像后,我似乎无法使ImagePicker
正确地转移到ViewController
。 (一堆“意外发现nil,同时展开可选值”错误,显示编辑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。
所以我遇到了这个建议,这是我第二次尝试的变体,使用窗口背景显示当前ViewController
的图像,这似乎是可能的。 http://xissburg.com/presenting-multiple-modal-view-controllers-at-once/
尝试4。
我的另一个想法是创建一个单独的ViewController
来处理ImagePicker
,然后通过接口构建器中的segue连接每个ViewController
。
答案 0 :(得分:2)
您是否尝试过这样做,首先ViewController
在viewDidLoad
上显示选择器而没有呈现动画。
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.
})
}