我想将iPhoneX的镜头距离设置为恒定值。
为了检查是否支持该功能,我检查了设备的isLockingFocusWithCustomLensPositionSupported
属性,如此处的文档所述:https://developer.apple.com/documentation/avfoundation/avcapturedevice/2361529-islockingfocuswithcustomlensposi
即使设备被锁定以进行配置,该方法也始终返回false,这意味着调用方法setFocusModeLocked(lensPosition, completionHandler)
总是会引发错误。
为什么会这样,以及如何正确调用setFocusModeLocked()
?
下面是我的方法:
let device = self.deviceInput.device
do {
try device.lockForConfiguration()
if device.isFocusPointOfInterestSupported && device.isFocusModeSupported(focusMode)
{
// this return true
}
if device.isLockingFocusWithCustomLensPositionSupported
{
//this always returns false
device.setFocusModeLocked(lensPosition: focusDistance, completionHandler: nil)
}
device.unlockForConfiguration()
} catch { print("Could not lock device for configuration: \(error)") }
在iPhoneX,iOS 12上测试