【发布时间】:2016-11-22 01:05:41
【问题描述】:
Apple 的 AVCam 演示应用程序的演示源代码可在此处找到:https://developer.apple.com/library/content/samplecode/AVCam/Introduction/Intro.html 在尝试拍照时崩溃(无论您构建的是 Objective-C 还是 Swift 版本)在线上AVCamCameraViewController/CameraViewController(Swift)拍摄照片:
[self.photoOutput capturePhotoWithSettings:photoSettings delegate:photoCaptureDelegate];
或(斯威夫特)
self.photoOutput.capturePhoto(with: photoSettings, delegate: photoCaptureDelegate)
崩溃时的错误信息是:
2016-11-21 17:44:31.590070 AVCam[2178:2303627] * 终止应用程序到期 未捕获的异常 'NSInvalidArgumentException',原因:'* -[AVCapturePhotoOutput capturePhotoWithSettings:delegate:] flashMode 必须设置为 supportedFlashModes 数组中存在的值'
当我检查 flash 模式数组时,我得到了这个:
(lldb) po [self.photoOutput supportedFlashModes] <__nssingleobjectarrayi>( 0 )
因此,为了添加 flash 模式,文档说您必须在 AVCapturePhotoSettings 对象中指定要支持的模式。我已经用这行代码做到了:
photoSettings.flashMode = AVCaptureFlashModeAuto;
或(斯威夫特)
photoSettings.flashMode = .auto
所以我的直觉是,这是一个与 12.9 英寸 iPad Pro 相关的错误,并且我可能需要提交雷达,但我想我会在这里问一下,以防有人以前见过。任何想法?
更新
我也可以复制其他 iPad,所以它似乎不仅仅是 12.9 英寸 iPad Pro。
【问题讨论】:
-
猜我们需要提交雷达。相同的代码库可在所有 iPhone 和 iPad air 上运行,没有任何崩溃。我没有 iPad Pro 来测试它:(
-
我所做的是确定当前设备是 .front 还是 .back 并且我将 flashMode 设置为 .off 用于 .front 或 .unspecified ,否则设置为 .auto 。我希望这会有所帮助。
-
这个问题解决了吗?有同样的问题。但无法确认用户拥有的 iPad 版本。 :(
-
我已经能够解决这个问题,只需重新启动计算机,然后重新启动 Xcode,然后进行干净的构建并在设备上运行。
-
嗯。有趣的。就我而言,这是生产构建中的一个问题。不确定是否有助于重新启动计算机并生成构建。
标签: objective-c swift ipad avfoundation avcam