我宣布:
let image = UIImagePickerController()
然后设置:
image.delegate = self
image.sourceType = .Camera
image.cameraDevice = .Front
image.allowsEditing = false
然后向相机添加叠加层:
let overlay = self.storyboard?.instantiateViewControllerWithIdentifier("OverlayVC")
image.cameraOverlayView = overlay?.view
然后展示相机:
self.presentViewController(image, animated: true, completion: nil)
然后我拍了一张照片,然后我的观察者开始拍摄:
NSNotificationCenter.defaultCenter().addObserver(self, selector: "removeOverlay", name: "_UIImagePickerControllerUserDidCaptureItem", object: nil)
并尝试执行:
func removeOverlay() {
image.cameraOverlayView = nil
}
现在一切正常并且叠加在大多数时间被删除,但在随机的情况下,应用程序崩溃:
由于未捕获的异常而终止应用 ' NSInvalidArgumentException',原因:'源类型必须是 UIImagePickerControllerSourceTypeCamera'
我的猜测是,它与执行我的删除叠加命令但不知道如何从这里继续的时间有关。 有什么见解吗?
答案 0 :(得分:1)
通过添加支票来修复它:
if image.cameraOverlayView != nil {
image.cameraOverlayView = nil
}