Reputation: 221
How to Apply Zoom in and Zoom out On Camera view Using UIPinchGestureRecognizer and AVCaptureDevice.
It is Not Zooming properly.
Zoom Out is Not Working in My below Code :
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);
}
}
}
Please help anyone.
Thanks
Upvotes: 2
Views: 2263
Reputation: 221
// PinchGesture Recognizer method define
- (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);
}
}
}
Upvotes: 4