我正在创建一个简单的相机应用程序,它可以在用户将相机按钮按入名为image的变量后保存照片,而不是按入照片库。
下一步,应用程序将移动到另一个视图控制器,该控制器在方形图像视图中显示图像。
这一切都有效,但是在显示图像之前,用户应该能够选择照片的确切位置,这是他在显示UIImagePicker时能够做到的。
图像说明视图1(相机)和视图2(显示图像的最终视图控制器)。在用户按下相机按钮并将图像保存到库中之后,我想调用UIImagePicker并自动显示最后一个图像,以便用户可以移动要在方形图像视图中显示的内容的位置。然后,UIImagePicker关闭,图像显示在“我的平方图像”视图的视图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不是关于这个的。这是关于让用户选择一个图像(因此得名,图像选择器)。[或者,它是让用户用相机捕捉图像,但您并没有为此使用它。]
所以我建议在图中的第二个插槽中使用您自己的自定义视图控制器。设计裁剪界面(如果这是您的目标)并不困难。
关于ios - Swift:UIImagePicker可以自动打开最后拍摄的照片吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48646654/