You need to enable JavaScript to run this app. AVCaptureDevice的exposurePointOfInterest在iOS14.4下不生效是什么原因?
优惠活动
大模型
产品
解决方案
定价
更多

AVCaptureDevice的exposurePointOfInterest在iOS14.4下不生效是什么原因?

曝光点设置无响应排查方案

iOS 14.4 版本对 .builtInDualCamera 的 exposurePointOfInterest 功能支持正常,可按照以下排查点检查遗漏配置:

  • 检查是否存在曝光模式冲突:如果之前的代码设置过 exposureMode = .locked 曝光锁定,即使配置了曝光兴趣点也不会触发自动调整。确认你使用的 .continuousAutoExposure 是当前设备支持的模式,可以在设置前加 isExposureModeSupported 校验。
  • 调整配置的执行顺序:官方要求修改曝光相关配置前必须成功获取配置锁,不要使用强制解包的 try!,避免锁获取失败时逻辑静默失效,建议改为do-catch捕获异常。同时需要先设置曝光模式,再赋值曝光兴趣点,避免属性配置被覆盖。
  • 排查自定义曝光参数冲突:如果之前调用过 setExposureModeCustom(duration:iso:completionHandler:) 自定义曝光时长、ISO,或者手动设置过 exposureTargetBias 曝光偏移,自定义曝光模式下兴趣点配置会自动失效,必须切回自动曝光模式才会生效。
  • 确认设备引用正确性:检查当前修改的 captureDevice 是会话中正在使用的活跃设备,如果切换过摄像头没有更新引用,会出现修改非活跃设备配置无效果的问题。

修正后的参考代码如下:

@IBAction func didTap() {
    guard captureDevice.isExposurePointOfInterestSupported else { return }
    do {
        try captureDevice.lockForConfiguration()
        // 先校验并设置曝光模式
        guard captureDevice.isExposureModeSupported(.continuousAutoExposure) else {
            captureDevice.unlockForConfiguration()
            return
        }
        captureDevice.exposureMode = .continuousAutoExposure
        // 再赋值曝光兴趣点
        captureDevice.exposurePointOfInterest = CGPoint(x: 0.5, y: 0.5)
        captureDevice.unlockForConfiguration()
    } catch {
        print("相机配置锁获取失败: \(error.localizedDescription)")
    }
}

如果需要确认配置是否生效,可以添加KVO监听 captureDevice 的 exposureTargetOffset 属性,属性值发生变动就说明曝光调整已经触发。

内容的提问来源于stack exchange,提问作者meaning-matters

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 14:42:02