1

我在我的应用程序中以相机模式显示 UIImagePickerController 模式。当用户拍照时,我将在 UIImagePickerController 上推送一个带有拍摄图像的新视图控制器。像这样 -

func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) {
    let myViewController = MyViewController(nibName: "MyViewController", bundle: NSBundle.mainBundle(), andImageData: UIImageJPEGRepresentation(image, 1.0))
    picker.pushViewController(myViewController, animated: true)
}

myViewController 在其 UIImageView 中显示图像。

但是当我从 myViewController 中弹出时,我看到了模糊的图像覆盖和禁用的控件。当我弹回来时,我真的想看到相机预览。

我已经确认没有需要移除的camerOverlayView。我现在让它工作的方式是将 sourceType 设置为 PhotoLibrary 并返回到 Camera ,从而强制重新初始化相机。但我想知道为什么会出现这种模糊的视图以及如何完全避免它。

在此处输入图像描述

4

2 回答 2

0

因为你正在使用UIImagePickerController.

根据文件;

UIImagePickerController 类管理可定制的、
系统提供的用户界面,用于在
支持的设备上拍摄照片和电影,以及选择保存的图像和电影以
在您的应用程序中使用。图像选择器控制器管理用户交互并将这些交互的结果传递给委托对象。

如您所见,它显示“系统提供”,因此当您使用它拍照时,实际上您正在使用系统相机。打开相机应用程序,然后去图书馆并返回。你会再次看到模糊。可能 iPhone 需要一些时间来重新激活相机并且看到冻结的视图不利于用户体验。

于 2015-12-22T18:02:48.240 回答
0

所以看起来问题是我在使用默认相机控件(showsCameraControls = true)时在 UIImagePickerController 上推送了一个新的视图控制器。这是不允许的。拍摄图像时必须关闭选择器控制器。从文档 -

如果将此属性设置为 false 并提供自己的自定义控件,则可以在关闭图像选择器界面之前拍摄多张照片。但是,如果您将此属性设置为 true,则您的委托必须在用户拍摄一张照片或取消操作后关闭图像选择器界面。

我现在使用 cameraOverlayView 并在其上添加自定义控件。我可以毫无问题地拍照、推送新视图并弹回相机。

于 2015-12-28T21:02:21.233 回答