увеличивать и уменьшать камеру при жестких движениях - PullRequest
7 голосов
/ 01 июля 2019

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

Я попробовал этот код

let device = AVCaptureDevice.default(for: .video)
print(sender.scale)
let vZoomFactor = sender.scale * prevZoomFactor
if sender.state == .ended {
    prevZoomFactor = vZoomFactor >= 1 ? vZoomFactor : 1
}

if sender.state == .changed{
    do {
        try device!.lockForConfiguration()
        if (vZoomFactor <= device!.activeFormat.videoMaxZoomFactor) {
            device!.videoZoomFactor = max(1.0, min(vZoomFactor, device!.activeFormat.videoMaxZoomFactor))
            device?.unlockForConfiguration()
        } else {
            print("Unable to set videoZoom: (max \(device!.activeFormat.videoMaxZoomFactor), asked \(vZoomFactor))")
        }
    } catch {
        print("\(error.localizedDescription)")
    }
}

В задней камере все работает нормально, но зум не применяется для передней камеры.

1 Ответ

5 голосов
/ 04 июля 2019

хорошо, потратив часы на этот код, я понял, где я совершил ошибку.

let device = AVCaptureDevice.default(for: .video)

по умолчанию получится задняя камера и она будет отлично работать, но когда я переключаю ее на передний план, она рассматривается до тех пор, пока она не будет считаться задней камерой, поэтому я просто добавил условие

    if  currentcam == frontcam {
                let device = frontcam
                //did other stuff for zooimng
                 } 
   else
  {
     let device = AVCaptureDevice.default(for: .video)
     //did other stuff for zooimng
  }

у меня это нормально работало

...