ios - UIPinchGestureRecognizer 缩放 AVCaptureConnection;不按比例缩小

标签 ios objective-c avfoundation avcapturesession uipinchgesturerecognizer

我有一个问题,我有一个 UIPinchGestureRecognizer,我用它来缩放我的相机预览和相应的 AVCaptureConnection 进出。第一次放大和缩小没有问题,直到完成捏合缩放后松开手指。如果我尝试向内捏(缩放回正常的 1.0 比例),手势不会重置预览和 AVCaptureConnection 比例降低,因此预览和 AVCaptureConnection 保持相同的大小。

我该如何解决这个问题? if 语句确保比例不会低于 1.0,因为我们不允许将 AVCaptureConnection 的比例设置为低于 1.0。

- (void)zoomPreview:(UIPinchGestureRecognizer *)recognizer
{
    CGFloat scale = recognizer.scale;

    NSLog(@"Scale: %f",scale);

    if (scale >= 1.0)
    {
        [[self.stillImageOutput.connections objectAtIndex:0] setVideoScaleAndCropFactor:scale];

        self.previewView.transform = CGAffineTransformMakeScale(scale, scale);
    }
}

最佳答案

通过反复试验解决了自己:

@property (nonatomic, assign) CGFloat lastScale;
@property (nonatomic, assign) CGFloat currentScale;

- (void)zoomPreview:(UIPinchGestureRecognizer *)recognizer
{
    self.currentScale += recognizer.scale - self.lastScale;
    self.lastScale = recognizer.scale;

    if (recognizer.state == UIGestureRecognizerStateEnded || recognizer.state == UIGestureRecognizerStateCancelled)
    {
        self.lastScale = 1.0;
    }

    if (self.currentScale < 1.0)
    {
        self.currentScale = 1.0;
    }

    if (self.currentScale > 5.0)
    {
        self.currentScale = 5.0;
    }

    if (self.currentScale >= 1.0 && self.currentScale <= 5.0)
    {
        [[self.stillImageOutput.connections objectAtIndex:0]setVideoScaleAndCropFactor:self.currentScale];

        self.previewView.transform = CGAffineTransformMakeScale(self.currentScale, self.currentScale);
    }
}

关于ios - UIPinchGestureRecognizer 缩放 AVCaptureConnection;不按比例缩小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24708449/

相关文章:

ios - 在 View 中播放多个视频的最佳方式是什么?

ios - SecItemCopyMatching 返回 nil 值没有任何错误

iphone - 如何在核心图中旋转 CPTGraphhostingview

ios - Storyboard?.instantiateViewController(withIdentifier : "") as! viewcontroller

objective-c - 使用带有蒙版图像的圆形进度条?

objective-c - 有没有一种简单的方法可以将 Objective-C 2.0 文件转换为 Objective-C 1?

ios - UITableView 中的 NSMutableArray

ios - 获取相册中最后保存的照片

iPhone 合成问题

iphone - MPMoviePlayerController 仅在 iOS 5 中显示黑屏