我在我的应用程序中以相机模式显示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,从而强制重新初始化摄像机。但我想知道为什么这种模糊的观点出现了,以及如何完全避免它。
答案 0 :(得分:0)
因为您使用的是UIImagePickerController
。
根据文件;
UIImagePickerController类管理可自定义的,
系统提供的用户界面,用于拍摄照片和电影 支持的设备,以及选择保存的图像和电影使用
在你的应用程序中图像选择器控制器管理用户交互和 将这些交互的结果传递给委托对象。
如您所见,它表示' 系统提供的' 所以当您使用它拍摄照片时,实际上您正在使用系统相机。打开相机应用程序然后去图书馆并返回。你会再次看到模糊。可能iPhone需要一些时间来重新激活相机并且看到冻结的视图对用户体验不利。
答案 1 :(得分:0)
所以看起来问题是我在UIImagePickerController上推送一个新的视图控制器,同时使用默认的相机控件(showsCameraControls = true)。这是不允许的。在拍摄图像时必须取消拾取器控制器。从文档 -
如果将此属性设置为false并提供自己的自定义 控制,您可以在解除图像之前拍摄多张照片 选择器界面。但是,如果您将此属性设置为true,则表示您的 委托必须在用户使用后关闭图像选择器界面 一张图片或取消操作。
我现在使用cameraOverlayView并在其上添加自定义控件。我可以拍照,推新视图并毫无问题地回到相机。