Swift 4 Toggle AVCaptureDevice Flash

Я знаю, что Swift обновлял свою документацию, я много исследовал и до сих пор не могу заставить мою камеру использовать вспышку. Может кто-нибудь увидеть что-то не так с моим кодом:

@objc func handleToggleFlash(){
    print("Toggling Flash")
    if AVCaptureDevice.authorizationStatus(for: .video) != 
AVAuthorizationStatus.authorized{
        return
    }

    do {
        try Device?.lockForConfiguration()
        if Device?.hasFlash == true {
            let settings = AVCapturePhotoSettings()
            let mode = settings.flashMode
            if mode == AVCaptureDevice.FlashMode.on {
                print("now off")
                settings.flashMode = AVCaptureDevice.FlashMode.off
                flashCameraButton?.setImage(#imageLiteral(resourceName: "flash_off"), for: .normal)
            } else {
                print("now on")
                settings.flashMode = AVCaptureDevice.FlashMode.on
                flashCameraButton?.setImage(#imageLiteral(resourceName: "flash_on"), for: .normal)
            }
            Device?.unlockForConfiguration()
        }
    } catch let err {
        print(err)
    }
}

Код выполняется до конца и даже попадает во внутренние операторы печати, но при успешной съемке вспышка не происходит. Кроме того, требуется ли проверка, когда устройство находится в режиме лицевой панели?

0 ответов

Другие вопросы по тегам