Я в замешательстве!AVCaptureDevice exposureMode не поддерживается?
Я пытаюсь вручную настроить экспозицию, чтобы она соответствовала CGPoint в центре предварительного просмотра. Я беру объект устройства и использую setExposureMode и setExposurePointOfInterest, чтобы выполнить манипуляции. Первое, что я делаю, это проверить, поддерживается ли режим экспозиции устройством. Если не поддерживается, верните. Если он поддерживается, установите значения. Моя путаница связана с тем фактом, что значение для устройства isExposureModeSupported: exposureMode возвращает NO. Но это поддерживается! У меня iPhone 5c. Если я игнорирую оператор return, я не получаю никаких ошибок.
- (void)device:(AVCaptureDevice *)device exposureMode:(AVCaptureExposureMode)exposureMode atPoint:(CGPoint)point
{
BOOL exposureModeSupported = [device isExposureModeSupported:exposureMode];
if (!exposureModeSupported)
return;
if ([device lockForConfiguration:&error]) {
[device setExposureMode:AVCaptureExposureModeContinuousAutoExposure];
[device setExposurePointOfInterest:point];
CALayer *exposeRect = [CALayer layer];
exposeRect.frame = CGRectMake(self.center.x-30, self.center.y-30, 60, 60);
exposeRect.borderColor = [UIColor whiteColor].CGColor;
exposeRect.borderWidth = 2;
exposeRect.name = @"exposeRect";
[self.previewLayer addSublayer:exposeRect];
[NSTimer scheduledTimerWithTimeInterval: 1
target: self
selector: @selector(dismissExposeRect)
userInfo: nil
repeats: NO];
[device setExposureMode:AVCaptureExposureModeContinuousAutoExposure];
[device unlockForConfiguration];
}
}
Как проверить, поддерживается ли режим экспозиции, если я не могу доверять возвращаемому значению?
Я закончил с проверкой, но я не уверен, что это правильный способ проверить. Состояние теперь выглядит следующим образом:
if (![device isExposurePointOfInterestSupported] && ![device isExposureModeSupported:exposureMode])
return;
Кто-нибудь еще сталкивался это и кто-нибудь знает, как правильно обращаться с этим?
Заранее спасибо.