Ios AVCapture&x200B;照片;输出isFlashScene键值
我正在关注苹果公司最新的示例代码AVCam Swift,该代码已更新为使用AVCapture照片输出 var isFlashScene:Bool{get} 一个布尔值,指示当前是否预览场景 由相机保证使用闪光灯。此属性的值将更改 取决于摄影机当前可见的场景。例如 您可以使用此属性突出显示屏幕中的闪存控件 应用程序的照相机用户界面,向用户指示场景足够暗 启用闪存可能是可取的。如果照片捕捉到 输出的supportedFlashModes值为off,此属性的值为 总是假的。此属性支持键值观察 我正试图观察这个键值,所以当自动闪光模式指示这是一个闪光灯将触发的场景(就像股票iOS摄像头应用程序),所以我可以改变用户界面,就像文档注释一样 所以我把它设置成这样:Ios AVCapture&x200B;照片;输出isFlashScene键值,ios,swift,avfoundation,key-value-coding,avcapturephotosettings,Ios,Swift,Avfoundation,Key Value Coding,Avcapturephotosettings,我正在关注苹果公司最新的示例代码AVCam Swift,该代码已更新为使用AVCapture照片输出 var isFlashScene:Bool{get} 一个布尔值,指示当前是否预览场景 由相机保证使用闪光灯。此属性的值将更改 取决于摄影机当前可见的场景。例如 您可以使用此属性突出显示屏幕中的闪存控件 应用程序的照相机用户界面,向用户指示场景足够暗 启用闪存可能是可取的。如果照片捕捉到 输出的supportedFlashModes值为off,此属性的值为 总是假的。此属性支持键值观察 我正
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)
这在应用程序中始终是错误的
我还尝试:
self.photoOutput.addObserver(self, forKeyPath: "isFlashScene", options: .new, context: &FlashSceneContext)
。。。。仍然没有改变的是闪光的场景,它是停留在错误的
self.photoOutput.addObserver(self, forKeyPath: "isFlashScene", options: .new, context: &FlashSceneContext)
以上是设置KVO的正确方法
必须实施photoSettingsForSceneMonitoring:
let photoSettings = AVCapturePhotoSettings()
photoSettings.flashMode = .auto
photoSettings.isAutoStillImageStabilizationEnabled = true
self.photoOutput.photoSettingsForSceneMonitoring = photoSettings
工作 我希望线程可以帮助您。不幸的是,这里没有任何内容。但是看起来添加观察者的正确方法是:self.photoOutput.addObserver(self,forKeyPath:“isFlashScene”,options:.new,context:&FlashSceneContext)。这似乎是isFlashScene的一个bug。