Je suis en train de mettre en œuvre 'pinch-to-zoom' avec fonction AVCaptureDevice dans AVFoundation:AVCaptureDevice videoZoomFactor pinch-to-zoom Taux
@IBAction func pinchGestureDetected(_ gestureRecognizer: UIPinchGestureRecognizer) {
switch gestureRecognizer.state {
case .began:
print ("began")
self.currenZoomFactor = self.videoDevice!.videoZoomFactor
do {
try self.videoDevice!.lockForConfiguration()
} catch let error as NSError {
NSLog("Could not lock device for configuration: %@", error)
}
case .changed:
print ("changed")
var zoomValue : CGFloat = ((gestureRecognizer.scale) - 1) + self.currenZoomFactor
if zoomValue > min(10.00, self.videoDevice!.activeFormat.videoMaxZoomFactor) {
zoomValue = min(10.00, self.videoDevice!.activeFormat.videoMaxZoomFactor)
} else if zoomValue < 1.00 {
zoomValue = 1.00
}
self.videoDevice!.videoZoomFactor = sentZoomValue
case .ended, .cancelled:
print ("ended/canceld")
self.videoDevice!.unlockForConfiguration()
default:
break
}
}
Au-dessus fonctionne très bien. Cependant, avec ci-dessus, taux de zoom est linéaire avec échelle de pincement. Cela rend le zoom beaucoup plus lent à des facteurs de zoom plus élevés.
Comment obtenir des taux de zoom accélérés à des facteurs de zoom plus élevés?