我目前正在使用以下代码使用UIPinchGestureRecognizer
放大和缩小:
- (IBAction)handlePinchToZoom:(UIPinchGestureRecognizer *)gestureRecognizer
{
if (gestureRecognizer.numberOfTouches < 2)
{
return;
}
if (gestureRecognizer.state == UIGestureRecognizerStateBegan)
{
lastScale = 1.0;
}
CGFloat currentScale = [[(AVCaptureVideoPreviewLayer *)self.previewView.layer valueForKeyPath:@"transform.scale"] floatValue];
// Constants to adjust the max/min values of zoom
const CGFloat kMaxScale = 4.0;
const CGFloat kMinScale = 1.0;
CGFloat scale = 1.0 - (lastScale - gestureRecognizer.scale);
scale = MIN(scale, kMaxScale/currentScale);
scale = MAX(scale, kMinScale/currentScale);
((AVCaptureVideoPreviewLayer *)self.previewView.layer).affineTransform = CGAffineTransformScale(((AVCaptureVideoPreviewLayer *)self.previewView.layer).affineTransform,
scale,
scale);
lastScale = gestureRecognizer.scale;
}
两件非常不同但特别糟糕的事情: