あなたはこのような完了ハンドラ内でお使いのカメラのオプションを設定することができます。焦点が露出を設定するようになるまで待機し、同じ原理がホワイトバランスと露出で機能します。カメラ設定の詳細については、hereをご覧ください。
var AVCGains:AVCaptureWhiteBalanceGains = AVCaptureWhiteBalanceGains()
AVCGains.redGain = 1.0;
AVCGains.greenGain = 1.0;
AVCGains.blueGain = 1.0;
self.camera?.focusMode = .locked
self.camera?.exposureMode = .locked
self.camera?.whiteBalanceMode = .locked
self.camera?.setFocusModeLockedWithLensPosition(focus_point, completionHandler: {(timestamp:CMTime) -> Void in
print("Focus applied")
self.camera?.setExposureModeCustomWithDuration(CMTimeMake(1,10), iso: 100, completionHandler: {(timestamp:CMTime) -> Void in
print("Exposure applied")
self.camera?.setWhiteBalanceModeLockedWithDeviceWhiteBalanceGains(AVCGains, completionHandler: {(timestamp:CMTime) -> Void in
print("White Balance applied")
// All settings have been applied, start running session
})
})
})
これはまさに私が試みたものです。しかし、場合によっては、補完ハンドラが呼び出されないことがあります。セッションが実行されているときにパラメータが実際に適用されているように見えるため、セッションを開始してから数秒待たなければならない場合があります。 – Bob5421
完了ハンドラは常に呼び出されます(設定が適用されている場合) 、露出とホワイトバランスがなければ完了ハンドラは呼び出されません(https://developer.apple.com/reference/avfoundation/avcapturedevice/1624568-setwhitebalancemodelockedwithdev#parameters)。私はこれをテストしたので、このコードが何か他のものよりもうまくいかない場合は、動作します。 – Tuc3k