弹出到相机UIImagePickerViewController时禁用模糊视图

时间:2015-12-22 17:54:28

标签: ios swift uiimagepickercontroller ios-camera

我在我的应用程序中以相机模式显示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,从而强制重新初始化摄像机。但我想知道为什么这种模糊的观点出现了,以及如何完全避免它。

enter image description here

2 个答案:

答案 0 :(得分:0)

因为您使用的是UIImagePickerController

根据文件;

  

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

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

答案 1 :(得分:0)

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

  

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

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