1

私はAppleの最新のサンプルコードAVCapture写真出力を使用するように更新されAVCamスウィフトを、次のようしています。AVCapture写真出力isFlashSceneキー値観測

するvar isFlashScene:ブール{う}

シーンが現在フラッシュのカメラを保証用途によって をプレビューしているかどうかを示すブール値。このプロパティの値は、カメラに現在表示されているシーンに応じて に変更されます。たとえば、 このプロパティを使用して、 アプリのカメラUIのフラッシュコントロールをハイライト表示することができます。これは、シーンを暗くして、フラッシュを有効にするのに十分な暗さがあることをユーザに示します。フォトキャプチャ 出力のsupportedFlashModes値がオフの場合、このプロパティの値は 常にfalseです。このプロパティは、キー値の観測をサポートします。

私は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) 

これはアプリから出てきても常に偽になります。

私も試してみました:まだ変更はフラッシュシーンではありません

self.photoOutput.addObserver(self, forKeyPath: "isFlashScene", options: .new, context: &FlashSceneContext) 

を...、それが偽の上に立ち往生しています。

+1

[This(http://stackoverflow.com/questions/28285118/ios-check-if-torch-is-on)スレッドはあなたを助けることができます、私は願っています。 – iphonic

+0

残念ながらそこには何もありませんが、オブザーバを追加する適切な方法のようです:self.photoOutput.addObserver(self、forKeyPath: "isFlashScene"、options:.new、context:&FlashSceneContext) – Gizmodo

+0

これはisFlashScene 。 – Gizmodo

答えて

1
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 

作品!

関連する問題