Swift:UIImagePicker可以自动打开最后拍摄的照片吗?

时间:2018-02-06 15:37:30

标签: ios swift image uiimagepickercontroller

我正在创建一个简单的相机应用程序,在用户将相机按钮按入一个名为image的变量而不是照片库后,可以保存照片。

接下来,应用程序移动到另一个视图控制器,该控制器在方形图像视图中显示图像。 这一切都有效,但在显示图像之前,用户应该能够选择照片的确切位置,当显示UIImagePicker时,他可以做到这一点。

enter image description here

图像显示了视图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...
    }
}

1 个答案:

答案 0 :(得分:3)

我建议您尝试在视图控制器序列图的第二个插槽中使用UIImagePickerController是完全错误的。您希望强制用户的特定图像。 UIImagePickerController与此无关。它是关于让用户选择图像(因此名称为Image Picker)。 [或者,它是关于让用户使用相机捕获图像,但是你没有使用它。]

所以我建议在图中的第二个插槽中使用自己的自定义视图控制器。设计裁剪界面(如果这是你的目标)并不困难。