我正在创建一个简单的相机应用程序,在用户将相机按钮按入一个名为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...
}
}
答案 0 :(得分:3)
我建议您尝试在视图控制器序列图的第二个插槽中使用UIImagePickerController是完全错误的。您希望强制用户的特定图像。 UIImagePickerController与此无关。它是关于让用户选择图像(因此名称为Image Picker)。 [或者,它是关于让用户使用相机捕获图像,但是你没有使用它。]
所以我建议在图中的第二个插槽中使用自己的自定义视图控制器。设计裁剪界面(如果这是你的目标)并不困难。