为什么autoFocusRangeRestriction没有效果?

问题描述 投票:3回答:1

您可以通过执行以下操作来告诉iPhone相机聚焦于近处或远处的物体:

try! device.lockForConfiguration()
defer { device.unlockForConfiguration() }
device.autoFocusRangeRestriction = .near

但无论我是靠近,远离还是离开它都没有任何区别。我在两部不同的手机上测试过 - iPhone XS和X - 然后把它交给两个不同的同事进行测试,以防万一我做错了。

我们在白天和晚上测试了框架的一部分靠近而其余部分远离的场景。我们期望将范围限制设置为接近使得近部分成为焦点,同样对于远部。但它永远不会奏效。为什么?

如果重要,我会在将设备添加到会话并且会话正在运行后更改范围限制。

我也尝试通过执行device.focusMode = .continuousAutoFocus强制AF算法在设置范围限制后运行,但它没有什么区别。 device.focusMode = .autoFocus也没有

ios iphone autofocus avcapturedevice avcapture
1个回答
0
投票

你不需要做AF算法强制。您正确识别的问题。基本上,对设备或captureSession添加到captureSession后所做的任何修改都不会生效。

解决方案很简单:

在将设备作为输入添加到captureSession之前(以及在运行captureSession之前),请执行以下代码:

try! device.lockForConfiguration()
defer { device.unlockForConfiguration() }
device.autoFocusRangeRestriction = .near

告诉我,如果这解决了问题! :)


推荐问答