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

Objective-C开发中如何可靠选取iPhone 13 Pro系列的微距摄像头?

解答

枚举不存在的原因

苹果并未在AVCaptureDeviceType枚举中新增独立的微距摄像头类型,也不存在文档遗漏。iPhone 13 Pro/Pro Max系列的微距拍摄能力,是由后置超广角摄像头的近距离对焦硬件+系统算法共同实现的,不属于独立的硬件摄像头分类,因此没有对应的枚举值。

你之前硬编码ID获取的设备,本质就是后置超广角摄像头,不同机型、不同系统版本的设备ID编号规则可能变化,硬编码确实存在稳定性风险。

可靠实现方案

该方案仅支持iOS 15.0及以上系统版本,更低系统版本无官方微距能力支持,实现步骤如下:

  • 用AVCaptureDeviceTypeBuiltInUltraWideCamera类型筛选后置超广角摄像头
  • 校验设备的isMacroModeSupported属性,确认其支持微距模式
  • 根据业务需求配置微距模式的开关状态

代码示例

获取支持微距的超广角设备

if (@available(iOS 15.0, *)) {
    AVCaptureDeviceDiscoverySession *discoverySession = [AVCaptureDeviceDiscoverySession
        discoverySessionWithDeviceTypes:@[ AVCaptureDeviceTypeBuiltInUltraWideCamera ]
                              mediaType:AVMediaTypeVideo
                               position:AVCaptureDevicePositionBack];
    
    for (AVCaptureDevice *device in discoverySession.devices) {
        if (device.isMacroModeSupported) {
            _captureDevice = device;
            break;
        }
    }
}

配置微距模式

NSError *configError = nil;
if ([_captureDevice lockForConfiguration:&configError]) {
    if (_captureDevice.isMacroModeSupported) {
        // 强制开启微距
        _captureDevice.macroMode = AVCaptureMacroModeOn;
        // 如需系统根据拍摄距离自动切换微距,可设为AVCaptureMacroModeAuto
    }
    [_captureDevice unlockForConfiguration];
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:54:03