【发布时间】:2015-10-21 17:27:24
【问题描述】:
我声明:
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'
我的猜测是,这与执行删除覆盖命令的时间有关,但不知道如何从这里开始。 有什么见解吗?
【问题讨论】:
标签: ios swift uiimagepickercontroller overlay