【问题标题】:Xcode 12. Value of type 'AVCapturePhotoOutput' has no member 'supportedFlashModes'Xcode 12.“AVCapturePhotoOutput”类型的值没有成员“supportedFlashModes”
【发布时间】:2021-01-05 05:53:33
【问题描述】:

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

【问题讨论】:

标签: xcode xcode12


【解决方案1】:

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

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

【讨论】:

  • 请问mode 的值是多少?
  • 我仍然得到错误。 backCamera.hasFlash && self.stillImageOutput.supportedFlashModes.contains(mode)
  • mode 是一个 AVCaptureDevice.FlashMode 值,这只是一个示例。
【解决方案2】:

正如@Andy Heard wrote:

我们深表歉意。对于使用 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.

【讨论】:

    【解决方案3】:

    对于 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(所以,可以安全地提交到应用商店)

    【讨论】:

      【解决方案4】:

      你可以试试这个:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-31
        • 1970-01-01
        • 2019-08-14
        • 2019-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多