我有一个定制的照片/摄像机(想想 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 https://github.com/DragonCherry/CameraPreviewController
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)