gpt4 book ai didi

Swift CameraView 放大和缩小不起作用

转载 作者:行者123 更新时间:2023-11-30 10:41:42 25 4
gpt4 key购买 nike

在我的场景中,我试图创建一个自定义CameraView。在这里,捏合放大和缩小不起作用。我该如何解决这个问题?

下面是我的代码:

  @IBAction func pinchToZoom(_ sender: UIPinchGestureRecognizer) {

guard let device = captureDevice else { return }

func minMaxZoom(_ factor: CGFloat) -> CGFloat { return min(max(factor, 1.0), device.activeFormat.videoMaxZoomFactor) }

func update(scale factor: CGFloat) {
do {
try device.lockForConfiguration()
defer { device.unlockForConfiguration() }
device.videoZoomFactor = factor
} catch {
debugPrint(error)
}
}

let newScaleFactor = minMaxZoom(pinch.scale * zoomFactor)

switch sender.state {
case .began: fallthrough
case .changed: update(scale: newScaleFactor)
case .ended:
zoomFactor = minMaxZoom(newScaleFactor)
update(scale: zoomFactor)
default: break
}
}

最佳答案

这里,下面的答案对于 CamerView ZoomInZoomOut 工作正常。

@IBAction func pinchToZoom(_ sender: UIPinchGestureRecognizer) {

let captureSession = AVCaptureSession()
captureSession.sessionPreset = AVCaptureSession.Preset.photo
let captureDevice = AVCaptureDevice.default(for: AVMediaType.video)

guard let device = captureDevice else { return }

if sender.state == .changed {

let maxZoomFactor = device.activeFormat.videoMaxZoomFactor
let pinchVelocityDividerFactor: CGFloat = 5.0

do {

try device.lockForConfiguration()
defer { device.unlockForConfiguration() }

let desiredZoomFactor = device.videoZoomFactor + atan2(sender.velocity, pinchVelocityDividerFactor)
device.videoZoomFactor = max(1.0, min(desiredZoomFactor, maxZoomFactor))

} catch {
print(error)
}
}
}

关于Swift CameraView 放大和缩小不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56643343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com