AVCapturePhotoOutput - Xcode 9 Beta 5 中的更改

Posted

技术标签:

【中文标题】AVCapturePhotoOutput - Xcode 9 Beta 5 中的更改【英文标题】:AVCapturePhotoOutput - changes in Xcode 9 Beta 5 【发布时间】:2017-08-07 20:23:48 【问题描述】:

刚刚安装了最新的 XCode 版本,它在 AVCapturePhotoOutput 类中提供了一些更改,我想知道如何获取支持的 flash 模式列表。在以前的版本中,我使用了supportedFlashModes 属性,该属性不再可用

open var __supportedFlashModes: [NSNumber]  get 

【问题讨论】:

【参考方案1】:

我猜新的 Swiftified supportedFlashModes 属性已在计划中,但尚未在 beta 5 中完成。

open var supportedFlashModes: [AVCaptureDevice.FlashMode]  get 

直到我的猜测得到证实(可能是否定的),您可以使用__supportedFlashModes。它没有被删除,只是重命名。

(一些测试版包含这种正在建设中的重命名。)

您最好发送错误报告,让 Apple 了解此问题。


编辑 似乎 ios 11 SDK/Xcode 9.1 已经修复了这个问题,Xcode 9.1 beta 的发行说明说:

现在可以使用以下 AVFoundation API: AVCaptureDevice.Format.supportedColorSpaces AVCaptureDevice.supportedFlashModes AVCapturePhotoOutput.availablePhotoPixelFormatTypes AVCapturePhotoOutput.availableRawPhotoPixelFormatTypes AVCapturePhotoSettings.availablePreviewPhotoPixelFormatTypes

之前修改为使用双下划线作为 应修改解决方法以使用这些公共符号或应用 可能会被 App Store 拒绝

(添加了粗体。)

【讨论】:

@AshleyMills,不幸的是真的。而且我找不到此类__-leaded 属性的任何 Swiftified 替代品。 (Apple's reference page 缺少此类属性的 Swift 版本。希望 Apple 的审核团队不会将此视为使用私有 API,但未得到证实。 Apple 已确认错误并改用__xx API。见这里:forums.developer.apple.com/thread/86810 @ShaiBen-Tovim,感谢您提供的链接。很高兴看到 Apple 的工程师已经确认。【参考方案2】:

Apple 相机开发团队确认 Swift 版本的 API 无意中被排除在 Xcode 9 版本之外。 直到修复必须使用__supportedFlashModes

请看这里:https://forums.developer.apple.com/thread/86810 顺便说一句,其他一些 AVFoundation API 也受到影响。

【讨论】:

以上是关于AVCapturePhotoOutput - Xcode 9 Beta 5 中的更改的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS10 中使用 AVCapturePhotoOutput - NSGenericException

使用 AVCapturePhotoOutput 使用闪光灯拍照时出现问题

无法仅获取在 Swift 中显示相机(AVCapturePhotoOutput)的 UIView 的屏幕截图

为啥在 AVCapturePhotoOutput 上调用 .capturePhoto(with:,delegate:) 会导致崩溃

AVCapturePhotoOutput 颜色与预览层不同

iOS拍照定制之AVCapturePhotoOutput