1

합니다.AVCapture 사진 출력 isFlashScene 키 - 값 - 관찰 나는 애플의 최신 샘플 코드 <strong>AVCapture 사진 출력</strong>을 사용하도록 업데이트됩니다 <strong><em>AVCam 스위프트</em></strong>, 다음입니다

var에 isFlashScene : BOOL

부울 값이 장면은 현재 플래시 카메라 보증 사용으로 을 미리되고 있는지 여부를 나타내는 {얻을}. 이 속성의 값은 현재 카메라에 표시되는 장면에 따라 으로 변경됩니다. 예를 들어, 이 속성을 사용하면 앱의 카메라 UI에서 플래시 컨트롤을 강조 표시하여 플래시를 활성화하는 것이 충분할 정도로 어두운 장면이 임을 사용자에게 알릴 수 있습니다. 사진 캡처 출력의 supportedFlashModes 값이 off이면이 속성의 값은 이며 항상 false입니다. 이 속성은 키 - 값 관찰을 지원합니다.

내가 관찰 키 - 값으로 시도하고이, 그래서 그냥 같이, 자동 플래시 모드이 (그냥 주식 아이폰 OS 카메라 앱 등) 발광하는 플래시 장면을 나타냅니다, 그래서 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) thread가 도움이 될 수 있습니다. – 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 

작품!