iOS缩放镜头rampToVideoZoomFactor(扫描拍照等)

503 阅读1分钟
// 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的方式并不可取,会使内容超出屏幕,依然可以扫到,而且整个坐标会需要依据放大系数进行处理,变得复杂。