Xcode 12.类型为"AVCapturePhotoOutput"的值没有成员"支持的闪光模式"



在新的Xcode 12中,当我尝试访问时出现错误:Value of type 'AVCapturePhotoOutput' has no member 'supportedFlashModes'https://developer.apple.com/documentation/avfoundation/avcapturephotooutput/1648766-supportedflashmodes有什么建议吗?

Xcode 12上似乎有一个错误,但您可以使用宏条件来解决它:

#if !targetEnvironment(simulator)
guard stillImageOutput?.supportedFlashModes.contains(mode) == true else { return }
//rest of your code
#endif

正如@Andy Heard所写:

我们深表歉意。对于使用Swift 3.2或Swift 4.0的应用程序AVFoundation捕获API(外部协议上的公共扩展(在Xcode 9中被无意地标记为私有。

以下AVFoundation API暂时不可用:

  • AVCaptureDevice.Format.supportedColorSpaces

  • AVCaptureDevice.supportedFlashModes

  • AVCapturePhotoOutput.availablePhotoPixelFormatTypes

  • AVCapturePhotoOutput.availableRawPhotoPixelFormatTypes

  • AVCapturePhotoSettings.availablePreviewPhotoPixelFormatTypes

作为一种解决方法,您可以通过以下方式使用这些API的SwiftPrivate版本在每个API前面加上双下划线(__(。例如,更改AVCaptureDevice.Format.supportedColorSpacesAVCaptureDevice.Format.__supportedColorSpaces

对于XCode 12回归(叹息(,您可以使用类似的__版本

var flashModesSupported: [AVCaptureDevice.FlashMode] {
#if targetEnvironment(simulator)
return self.photoOutput.__supportedFlashModes.compactMap { AVCaptureDevice.FlashMode.init(rawValue: $0.intValue) }
#else
return self.photoOutput.supportedFlashModes
#endif
}

有一份报告没有触发SPI(因此,可以安全地提交到应用商店(

你可以试试这个:

let device2 = AVCapturePhotoOutput()
if (device2.supportedFlashModes.contains(.auto)){
} else {

}

相关内容

  • 没有找到相关文章

最新更新