【发布时间】:2017-03-31 18:41:44
【问题描述】:
我正在关注 Apple 最新的示例代码 AVCam Swift,它已更新为使用 AVCapturePhotoOutput。
var isFlashScene: Bool { get }
一个布尔值,指示当前是否正在预览场景 由相机保证使用闪光灯。该属性的值发生变化 取决于相机当前可见的场景。例如, 你可以使用这个属性来突出显示你的 Flash 控件 应用程序的相机 UI,向用户指示场景足够暗 启用闪光灯可能是可取的。如果拍摄照片 output 的 supportedFlashModes 值为 off,该属性的值为 总是假的。该属性支持 Key-value 观察。
我正在尝试键值对观察这一点,因此当自动闪光模式指示这是一个闪光灯将触发的场景时(就像股票 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 上。
【问题讨论】:
-
This线程可以帮助你,我希望。
-
不幸的是那里什么都没有..但看起来添加观察者的正确方法是:self.photoOutput.addObserver(self, forKeyPath: "isFlashScene", options: .new, context: &FlashSceneContext)跨度>
-
这似乎是 isFlashScene 的一个错误。
标签: ios swift avfoundation key-value-coding avcapturephotosettings