2016-03-07 81 views
2

如何應用放大和縮小攝像頭視圖使用UIPinchGestureRecognizer和AVCaptureDevice。 它沒有正確縮放。
縮小是不是在我下面的代碼工作:使用Objective-C放大和縮小攝像機視圖?

AVCaptureDevice *device =[AVCaptureDevice defaultDeviceWithMediaType: 
                 AVMediaTypeVideo]; 
AVCaptureDeviceFormat *format = device.activeFormat; 
CGFloat maxZoomFactor = format.videoMaxZoomFactor; 
const CGFloat pinchVelocityDividerFactor = 2.0f; 

if (pinchRecognizer.state == UIGestureRecognizerStateChanged || pinchRecognizer.state ==UIGestureRecognizerStateBegan) 
{ 
    NSError *error = nil; 
     if ([device lockForConfiguration:&error]) 
     { 
     CGFloat desiredZoomFactor = device.videoZoomFactor + 
      atan2f(pinchRecognizer.velocity, pinchVelocityDividerFactor); 

      // Check if desiredZoomFactor fits required range from 1.0 
            //to activeFormat.videoMaxZoomFactor 
      if((1.0 <= pinchRecognizer.scale) && (2.5 >= pinchRecognizer.scale)) 
      device.videoZoomFactor = pinchRecognizer.scale * pinchRecognizer.scale; 

     [device unlockForConfiguration]; 
     } 
     else 
     { 
     NSLog(@"error: %@", error); 
     } 
} 
} 

請幫助任何人。
感謝

+0

看看http://stackoverflow.com/questions/23245127/uipinchgesturerecognizer-make-zoom-in-location-of-fingers-not -only-center – fabersky

+0

但是,他們已經給出了圖片或視圖我想使用設備VideoZoom因子 – kishor

+0

@kishor你在哪裏添加了pinchgesture?我必須實現縮放,但不知道應該在哪裏添加捏手勢? – Dalvik

回答

2

// PinchGesture識別器法定義

- (void)handlePinchZoom:(UIPinchGestureRecognizer *)pinchRecognizer 
{ 
    AVCaptureDevice *device =[AVCaptureDevicedefaultDeviceWithMediaType: 
                 AVMediaTypeVideo]; 
    AVCaptureDeviceFormat *format = device.activeFormat; 
    CGFloat maxZoomFactor = format.videoMaxZoomFactor; 
    NSArray *formats = device.formats; 
    const CGFloat pinchVelocityDividerFactor = 2.0f; 
    if (pinchRecognizer.state == UIGestureRecognizerStateChanged || pinchRecognizer.state ==UIGestureRecognizerStateBegan) 
    { 
     NSError *error = nil; 
     if ([device lockForConfiguration:&error]) 
     { 
      CGFloat desiredZoomFactor = device.videoZoomFactor + 
      atan2f(pinchRecognizer.velocity, pinchVelocityDividerFactor); 

      device.videoZoomFactor = MAX(1.0, MIN(desiredZoomFactor, 
              device.activeFormat.videoMaxZoomFactor)); 
      [device unlockForConfiguration]; 
     } 
     else 
     { 
     NSLog(@"error: %@", error); 
     } 
    } 
    }