我试图通过改变所提到的兴趣点来改变焦点。
该函数始终返回 YES,当我使用 getter 读取新的兴趣点时,它已更改但 isFocusAdjusting = NO
供参考:
focusMode: AVCaptureFocusModeContinuousAutoFocus
newFocusPointOfInterest: Normalized CGPoint
焦点似乎锁定在 (0.5f, 0.5f) 或基本上是 AutoFocus
此代码适用于除 iPhone 6 和 iPhone 6+ 之外的所有设备。有什么我做错了吗?是否有任何 API 调用更改?
请帮忙
- (BOOL)changeDeviceFocusPointOfInterest:(CGPoint)newFocusPointOfInterest
focusMode:(AVCaptureFocusMode)focusMode
{
NSError *error;
BOOL ret = NO;
if([device lockForConfiguration:&error] )
{
if ([device isFocusModeSupported:focusMode] && [device isFocusPointOfInterestSupported])
{
[device setFocusPointOfInterest:newFocusPointOfInterest];
[device setFocusMode:focusMode];
ret = YES;
}
else
{
NSLog(@"focus point setting not supported:{%f,%f}", newFocusPointOfInterest.x, newFocusPointOfInterest.y);
ret = NO;
}
[device unlockForConfiguration];
}
else
{
NSLog(@"cant lock hardware settings for changing focus point:{%f,%f}", newFocusPointOfInterest.x, newFocusPointOfInterest.y);
ret = NO;
}
return ret;
}
**编辑:附加意见:**
我检查了 Apple AVCam 和 AVCamManual 提供的示例应用程序 - 点击以聚焦适用于 AVCam 但不是 AVCamManual相同的设备 我尝试在示例工作区中删除与手动控制相关的代码,但它没有产生任何结果。
键值观察表明 lensPosition 或 focusAdjusting 属性没有变化
我只发现一个关于这个问题的论坛帖子,但建议的解决方法似乎都没有工作https://devforums.apple.com/message/1073042#1073042
我尝试将焦点设置为自定义值、极端值,然后将模式设置为具有所需 focusPointOfInterest 的 ContinousAuto。这会触发焦点更改,但不会集中在所需的兴趣点