// device为AVCaptureDevice
- (void)rampToVideoZoomFactor:(CGFloat)videoZoomFactor
{ // 控制范围大小
videoZoomFactor = videoZoomFactor < self.device.minAvailableVideoZoomFactor ? self.device.minAvailableVideoZoomFactor : videoZoomFactor;
videoZoomFactor = videoZoomFactor > self.device.maxAvailableVideoZoomFactor ? self.device.maxAvailableVideoZoomFactor : videoZoomFactor;
// 上锁
NSError *lockError;
if([self.device lockForConfiguration:&lockError])
{
// 渐进缩放
self.device.isRampingVideoZoom ? nil : [self.device rampToVideoZoomFactor:videoZoomFactor withRate:2];
[self.device unlockForConfiguration];
}
else
{
NSLog(@"zoom error❌");
}
}
使用放大videoPreviewLayer的方式并不可取,会使内容超出屏幕,依然可以扫到,而且整个坐标会需要依据放大系数进行处理,变得复杂。