我正在关注 Apple 最新的示例代码AVCam Swift,它已更新为使用AVCapturePhotoOutput。
var isFlashScene: 布尔 { 获取 }
一个布尔值,指示相机当前正在预览的场景是否需要使用闪光灯。此属性的值根据相机当前可见的场景而变化。例如,您可以使用此属性突出显示应用程序的相机 UI 中的闪光灯控件,向用户指示场景足够暗,可能需要启用闪光灯。如果照片捕获输出的supportedFlashModes 值为关闭,则此属性的值始终为false。该属性支持键值观察。
我正在尝试键值观察这一点,因此当自动闪光模式表明这是一个闪光灯将触发的场景时(就像股票 iOS 相机应用程序一样),所以我可以更改 UI,就像文档说明一样。
所以我这样设置:
private let photoOutput = AVCapturePhotoOutput()
private var FlashSceneContext = 0
self.addObserver(self, forKeyPath: "photoOutput.isFlashScene", options: .new, context: &FlashSceneContext)
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if context == & FlashSceneContext {
print ("Flash Scene Changed")
}
}
上面从未显示出任何变化。即使我登录检查
print (self.photoOutput.isFlashScene)
尽管在应用程序中,这始终显示为 False。
我也试过:
self.photoOutput.addObserver(self, forKeyPath: "isFlashScene", options: .new, context: &FlashSceneContext)
.... Flash 场景仍然没有变化,它卡在 False 上。