gpt4 book ai didi

ios - 如何在自定义相机中实现 "pinch to zoom"

转载 作者:可可西里 更新时间:2023-11-01 01:00:11 26 4
gpt4 key购买 nike

我有一个自定义的照片/摄像机(想想 Snapchat),带有捏合识别器可以放大/缩小。根据我在网上找到的一些代码,这是正确的做法:

  • 稍微放大效果正常
  • 捕捉图像捕捉缩放后的图像

以下是我需要帮助的问题:

  • 缩小会导致崩溃
  • 虽然放大有效,但如果我放大、停止触摸屏幕,然后再次尝试放大,它似乎会重置缩放。
  • 捕捉视频重置缩放

这是我的捏合手势代码,应该更改什么?

for input in self.captureSession.inputs {
// check that the input is a camera and not the audio
if input.device == self.frontCameraDevice || input.device == self.backCameraDevice {

if pinch.state == UIGestureRecognizerState.Changed {

let device: AVCaptureDevice = input.device
let vZoomFactor = pinch.scale
do{
try device.lockForConfiguration()
if vZoomFactor <= device.activeFormat.videoMaxZoomFactor {
device.videoZoomFactor = vZoomFactor
device.unlockForConfiguration()
}
}catch _{
}
}

}
}

最佳答案

您必须根据以前的值设置 videoZoomFactor。

do {
try device.lockForConfiguration()
switch gesture.state {
case .began:
self.pivotPinchScale = device.videoZoomFactor
case .changed:
var factor = self.pivotPinchScale * gesture.scale
factor = max(1, min(factor, device.activeFormat.videoMaxZoomFactor))
device.videoZoomFactor = factor
default:
break
}
device.unlockForConfiguration()
} catch {
// handle exception
}

您应该保存以前的比例因子以便从当前缩放状态开始放大/缩小,上面示例中的 self.pivotPinchScale 是关键。我希望你能从下面的例子中得到一些提示。

https://github.com/DragonCherry/CameraPreviewController

关于ios - 如何在自定义相机中实现 "pinch to zoom",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35246222/

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