Mat*_*ong 10 objective-c avfoundation ipad avcam swift
Apple的AVCam演示应用程序的演示源代码可在此处找到:https://developer.apple.com/library/content/samplecode/AVCam/Introduction/Intro.html在尝试拍照时崩溃(无论您是否构建了目标-C(或Swift版本)在AVCamCameraViewController/CameraViewController(Swift)线上拍摄照片:
[self.photoOutput capturePhotoWithSettings:photoSettings delegate:photoCaptureDelegate];
Run Code Online (Sandbox Code Playgroud)
或(斯威夫特)
self.photoOutput.capturePhoto(with: photoSettings, delegate: photoCaptureDelegate)
Run Code Online (Sandbox Code Playgroud)
崩溃时的错误消息是:
2016-11-21 17:44:31.590070 AVCam [2178:2303627] *由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'* - [AVCapturePhotoOutput capturePhotoWithSettings:delegate:] flashMode必须设置为supportedFlashModes中存在的值阵"
当我检查闪存模式数组时,我得到了这个:
(lldb)po [self.photoOutput supportedFlashModes] <__ NSSingleObjectArrayI 0x170007c50>(0)
因此,为了添加闪存模式,文档说您必须指定要在AVCapturePhotoSettings对象中支持的模式.我用这行代码完成了这个:
photoSettings.flashMode = AVCaptureFlashModeAuto;
Run Code Online (Sandbox Code Playgroud)
或(斯威夫特)
photoSettings.flashMode = .auto
Run Code Online (Sandbox Code Playgroud)
所以我的预感是,这是一个特别与12.9"iPad Pro有关的错误,我可能需要提交一个雷达,但我想我会问这里,万一有人以前见过它.有什么想法吗?
更新
我也能够复制其他iPad,所以它似乎不仅仅是12.9英寸的iPad Pro.
Soj*_*oja 10
添加这个......
let position = self.videoDeviceInput.device.position
photoSettings.flashMode = position == .front || position == .unspecified ? .off : .auto
Run Code Online (Sandbox Code Playgroud)
就在此之前......
self.photoOutput.capturePhoto(with: photoSettings, delegate: photoCaptureDelegate)
Run Code Online (Sandbox Code Playgroud)
这应该解决问题.
| 归档时间: |
|
| 查看次数: |
2047 次 |
| 最近记录: |