Я получаю это смешное значение при чтении положения объектива камеры IOS - PullRequest
0 голосов
/ 22 декабря 2018

Использование этого кода с BuiltInWideAngleCamera в Swift на iPhone XS MAX под управлением iOS 12.1.2:

let lensPos: Float  = AVCaptureDevice.currentLensPosition;
lockCameraForSettings();
self.inputDevice?.setFocusModeLocked(lensPosition: LensPos, completionHandler: { (time) -> Void in})
unlockCameraForShooting();

приводит к сбою:

[AVCaptureDevice setFocusModeLockedWithLensPosition: завершениюHandler:] Theпройден объективPosition -340282346638528859811704183484516925440.000000 вне диапазона [0, 1] '

Камера работает и заметно фокусируется на предварительном просмотре экрана.Как это возможно в этой конфигурации?

Вставка константного значения между 0-1 работает, по крайней мере в том, что он не выдает ошибку.

1 Ответ

0 голосов
/ 22 декабря 2018

Я полагаю, вы хотите использовать .lensPosition вместо .currentLensPosition, который является специальной константой, представляющей положение объектива.Вы можете получить доступ к .lensPosition, только когда ссылаетесь на экземпляр типа AVCaptureDevice.

    var captureDevice: AVCaptureDevice?

    // Plus models and X's
    if let device = AVCaptureDevice.default(.builtInDualCamera,
                                            for: .video, position: .back) {
        captureDevice = device
     // Single Lens devices.
    } else if let device = AVCaptureDevice.default(.builtInWideAngleCamera,
                                                   for: .video, position: .back) {
        captureDevice = device
    } else {
        // No camera was found, is it broke?
        print("Missing expected back camera device.")
    }

    if let device = captureDevice {
        // We have a device, do something with it.
        print(device.lensPosition)
    }
...