【发布时间】:2018-07-16 17:32:23
【问题描述】:
我正在创建一个简单的相机应用程序,它会在用户按下相机按钮后将照片保存到一个名为 image 的变量中,然后保存到照片库中。
接下来,应用程序转到另一个视图控制器,该控制器以方形图像视图显示图像。 这一切都有效,但在显示图像之前,用户应该能够选择照片的确切位置,当 UIImagePicker 显示时,他将能够做到这一点。
图像说明了 View 1(相机)和 View 2(显示图像的最终视图控制器)。在用户按下相机按钮并将图像保存到库后,我想调用 UIImagePicker 并自动显示最后一张图像,以便用户可以移动他想要显示的内容在方形图像中的位置看法。比 UIImagePicker 关闭并且图像显示在我的方形图像视图中的 View 2 中。
这可能吗?
查看 1:
这是我目前保存图像并转到下一个视图的方法:
@IBAction func captureImage(_ sender: UIButton) {
cameraController.captureImage {(image, error) in
guard let image = image else {
print(error ?? "Image capture error")
return
}
try? PHPhotoLibrary.shared().performChangesAndWait {
PHAssetChangeRequest.creationRequestForAsset(from: image)
print("photo saved")
}
// go to next view controller and transfer image to inputImage
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "Filter") as! FilterViewController
vc.inputImage = image!
self.navigationController?.pushViewController(vc, animated: true)
}
显然我可以只在方形图像视图中显示新图像,但由于用户拍摄全屏照片,他想要看到的内容可能不在中心,所以选择确切的位置是强制性的,这就是我想要显示带有最后一张照片的 UIImagePicker(用户应该不能选择其他图像)。
视图 2:
到目前为止,我只是在 viewDidLoad() 中加载视图 2 时加载 UIImagePicker,但显然它要求用户选择图像:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
guard let image = info[UIImagePickerControllerEditedImage] as? UIImage else {return}
imageView.image = image
inputImage = image
dismiss(animated: true) {
// do something here...
}
}
【问题讨论】:
-
在这个故事中没有意义的是 UIImagePickerController 的使用。在我看来,您一开始并没有使用 UIImagePickerController 来捕获照片(对吗?),即使您是,在我们到达第二个视图控制器时它已经被解雇了(对吗? ) 那么 UIImagePickerController 甚至在第二个位置做什么?您只需要一系列自定义视图控制器。
-
我在显示 View 2 时打开 UIImagePickerController,所以它还没有被关闭,但你是对的,我一开始没有使用 Picker 来捕获图像。我在一天的时间里创建了我自己的自定义相机控制器,以便能够显示一个漂亮的全屏 UI。您建议如何让用户编辑/移动图像?我认为 UIImagePicker 是个好主意,因为当用户从他们的库中选择一张照片时,它允许移动/编辑照片。
-
"您建议如何让用户编辑/移动图像?"正如我所说,我建议为此使用您自己的自定义视图控制器。您想强制用户使用特定图像。 UIImagePickerController 与此无关。这是关于让用户挑选一张图片。
标签: ios swift image uiimagepickercontroller