iPhone 13 Pro:如何在自定义相机中启用微距模式?
在自研相机应用中实现iPhone 13 Pro微距模式(近距离自动切换超广角)
靠距离检测触发切换
苹果原生微距模式的核心是通过镜头到物体的实际距离触发超广角切换,而非仅依赖变焦操作。你需要借助AVFoundation获取相机的自动对焦(AF)距离数据:- 启用相机对焦功能,监听对焦状态变化以提取实时距离值。当距离低于2-3厘米(对应iPhone 13 Pro微距的触发阈值)时,触发摄像头切换。
- 优先以相机AF数据作为判断依据,比设备距离传感器数据更贴合拍摄场景的实际距离。
手动管控摄像头切换逻辑
不要依赖builtInTripleCamera的自动切换机制(它的触发条件包含变焦操作),需要手动管理摄像头输入:- 提前获取超广角摄像头实例:
let ultraWideCamera = AVCaptureDevice.DiscoverySession( deviceTypes: [.builtInUltraWideCamera], mediaType: .video, position: .back ).devices.first - 检测到近距离触发条件时,用
AVCaptureSession的配置方法原子性完成切换:session.beginConfiguration() // 移除当前摄像头输入 session.inputs.forEach { session.removeInput($0) } // 添加超广角摄像头输入 if let input = try? AVCaptureDeviceInput(device: ultraWideCamera!) { session.addInput(input) } session.commitConfiguration()
- 提前获取超广角摄像头实例:
优化切换体验
- 预加载超广角摄像头的配置,避免切换时的初始化延迟;
- 切换过程中加入过渡动画,保持预览画面连续性,减少视觉卡顿;
- 加入距离检测容错逻辑,比如连续多次检测到近距离才触发切换,避免误触。
内容的提问来源于stack exchange,提问作者Benjamin
相关产品推荐
相关产品推荐

