Очевидно, что это старый вопрос, но поскольку есть возможность получить «значение линзы», начиная с iOS8, оно должно появиться здесь.
Начиная с iOS8, вы можете получить значение фокуса от объектива, наблюдая значение ключа lensPosition
. Это свойство класса AVCaptureDevice
, которое является частью структуры AVFoundation
.
Итак, где-то в вашем классе камеры установите наблюдателя:
// Assuming _device is an object of the `AVCaptureDevice` class
[_device addObserver:self forKeyPath:@"lensPosition" options:NSKeyValueObservingOptionNew context:nil];
А в классе, который вы использовали в качестве наблюдателя:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
if ([keyPath isEqualToString:@"lensPosition"]) {
NSLog(@"change: %@", change);
NSLog(@"lens position: %f", [change[@"new"] floatValue]);
}
}
Положение объектива будет отображаться в виде скалярного значения от 0 до 1.
Также вы можете установить положение объектива вручную. Подробнее о управлении положением объектива см. В документации Apple.
Наконец, как и для всех наблюдателей со значением ключа , не забудьте удалить наблюдателя.
ПРИМЕЧАНИЕ. Объектив - это механическая часть устройства, и фокусировка осуществляется путем перемещения объектива через пружину. Значения отличаются в зависимости от устройства и ситуации.