我想在QR应用程序中实现一个简单的缩放缩放手势.
这看起来很简单,所以我做了一些研究,我发现了一些问题的可能答案:
AVCaptureDevice Camera Zoom
如何在自定义相机中实现"捏缩放"
捏缩放相机
在iOS中使用AVCapture捕捉视频时缩放
不幸的是,没有人真正解决它,我个人喜欢第一个(在Objective-C中),我试图在Swift 3中做到这一点.
我用一些尝试后想出的代码发布了一个答案,欢迎其他更简单/更好/更简单的解决方案:)
我使用了Pinch Gesture Recognizer故事板,然后链接了这个动作:
@IBAction func pinchToZoom(_ sender: UIPinchGestureRecognizer) {
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)
}
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,这captureDevice是该类的可选对象AVCaptureDevice.
| 归档时间: |
|
| 查看次数: |
2684 次 |
| 最近记录: |