您可以通过以下操作告诉iPhone相机将焦点对准近处或远处的物体:
try! device.lockForConfiguration()
defer { device.unlockForConfiguration() }
device.autoFocusRangeRestriction = .near
但是,无论我将其设置为近,远还是未设置,都没有任何区别。我在两部不同的手机(iPhone XS和X)上进行了测试,然后将其交给两个不同的同事进行测试,以防万一我做错了事。
我们测试了白天和黑夜中画面的一部分在附近而其余部分在远处的场景。我们期望将范围限制设置为近端会导致近端成为焦点,远端部分同样如此。但它永远都行不通。为什么?
以防万一,在将设备添加到会话中并且会话正在运行之后,我将更改范围限制。
我还尝试通过执行device.focusMode = .continuousAutoFocus
来设置范围限制后强制AF算法运行,但这没有什么区别。 device.focusMode = .autoFocus
答案 0 :(得分:0)
您不需要执行AF算法强制。您正确确定的问题。基本上,在将设备或captureSession添加到captureSession之后,您对其所做的任何修改都不会生效。
解决方案很简单:
在将设备作为输入添加到captureSession之前(并且在运行captureSession之前),请执行以下代码:
try! device.lockForConfiguration()
defer { device.unlockForConfiguration() }
device.autoFocusRangeRestriction = .near
告诉我是否可以解决问题! :)