最后一节,我们为程序添加通过手势对摄像头进行缩放控制的功能。
添加实例变量,并在viewDidLoad方法的最后,进行初始化:
CGFloat _initialPinchZoom;
[_previewView addGestureRecognizer:[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchDetected:)]];实现pinchDetected:方法:
- (void)pinchDetected:(UIPinchGestureRecognizer*)recogniser
{
// 1
if (!_videoDevice)
return;
// 2
if (recogniser.state == UIGestureRecognizerStateBegan)
{
_initialPinchZoom = _videoDevice.videoZoomFactor;
}
// 3
NSError *error = nil;
[_videoDevice lockForConfiguration:&error];
if (!error) {
CGFloat zoomFactor;
CGFloat scale = recogniser.scale;
if (scale < 1.0f) {
// 4
zoomFactor = _initialPinchZoom - pow(_videoDevice.activeFormat.videoMaxZoomFactor, 1.0f - recogniser.scale);
}
else
{
// 5
zoomFactor = _initialPinchZoom + pow(_videoDevice.activeFormat.videoMaxZoomFactor, (recogniser.scale - 1.0f) / 2.0f);
}
// 6
zoomFactor = MIN(10.0f, zoomFactor);
zoomFactor = MAX(1.0f, zoomFactor);
// 7
_videoDevice.videoZoomFactor = zoomFactor;
// 8
[_videoDevice unlockForConfiguration];
}
}
编译执行,在手机上缩放效果如下:
转载请注明出处:
http://blog.csdn.net/yamingwu/article/details/44535787
iOS AV Foundation 二维码扫描 05 缩放摄像头
原文:http://blog.csdn.net/yamingwu/article/details/44535787