自定义相机应用程序与iOS 7原生相机应用程序中的iOS缩放(质量+焦点)

时间:2014-07-17 11:18:13

标签: ios performance zoom avfoundation uigesturerecognizer

我目前正在使用以下代码使用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;
}

两件非常不同但特别糟糕的事情:

  1. 缩放质量 - 我不确定Apple是如何做到这一点的,但原生应用中的缩放质量更好,我想知道是否有办法解决这个问题。
  2. 焦点 - 另一个问题是焦点。与自定义应用相比,对象在本机相机应用中的关注度更高。

1 个答案:

答案 0 :(得分:0)

在iOS7上,您应该使用新的相机API,如

  

setVideoZoomFactor

和其他人。

示例代码here