You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Objective-C CameraView初始缩放设置:默认开启2倍变焦方法问询

解决Objective-C相机初始2倍变焦的问题

要设置相机默认开启2倍变焦,只需在初始化相机的setupBackCamera方法中,锁定相机配置后直接设置videoZoomFactor属性即可,同时要保证设置的变焦值不超过设备支持的最大倍数。

修改后的setupBackCamera代码:

@property (nonatomic) AVCaptureDevice *camDevice;
@property (nonatomic) CGFloat zoomBegin;
@property (nonatomic) CGFloat zoomMax;

- (void)setupBackCamera {
    self.captureSession = [AVCaptureSession new];
    self.captureSession.sessionPreset = AVCaptureSessionPresetPhoto;
    AVCaptureDevice *backCamera = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    if (!backCamera) {
        NSLog(@"Unable to access back camera!");
        return;
    }
    
    NSError *error;
    
    // 管理相机缩放相关配置
    if(YES == [backCamera lockForConfiguration:&error]) {        
        _zoomMax = backCamera.activeFormat.videoMaxZoomFactor;
        // 设置初始变焦为2倍,同时不超过设备最大变焦倍数
        CGFloat initialZoom = MIN(2.0, _zoomMax);
        backCamera.videoZoomFactor = initialZoom;
        [backCamera unlockForConfiguration];
    }
    _camDevice = backCamera;
    [_previewView addGestureRecognizer: [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchToZoom:)]];
    
    AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:backCamera
                                                                        error:&error];
    // 后续原有代码...
}

关键说明:

  • 必须调用lockForConfiguration:获取相机配置的修改权限,修改完成后调用unlockForConfiguration释放权限,否则直接修改videoZoomFactor会报错。
  • 使用MIN(2.0, _zoomMax)确保初始变焦不会超过设备支持的最大倍数(不同设备的videoMaxZoomFactor不同,比如iPhone 6s是4倍,新款机型更高)。
  • 你的pinchToZoom:方法已经正确操作了相机的原生变焦属性,初始设置后,用户捏合变焦会基于这个初始值继续调整,无需额外修改捏合逻辑。

另外注意:你的代码中存在两个捏合手势处理方法pinchDetected:和pinchToZoom:,其中pinchDetected:是操作预览层的transform缩放,这和pinchToZoom:操作相机原生变焦是两种不同的缩放方式,建议只保留一种,避免冲突。如果要使用相机原生变焦(画质更好),可以移除pinchDetected:相关代码和手势。

内容的提问来源于stack exchange,提问作者Jesper Martensson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 06:05:22