2013-03-12 4 views
1

У меня есть аварии сообщения:камера фокус ИОСА

* Согласующего приложение из-за неперехваченное исключение «NSInvalidArgumentException», причина: «Установка focusPointOfInterest не поддерживаются этим устройство. Использование isFocusPointOfInterestSupported»

после кода:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [device setFocusPointOfInterest:CGPointMake(100, 100)]; 
} 

Есть ли способ, чтобы сделать акцент, как в Фотопленка?

+0

Я не думаю, что вы действительно понимаете понятие фокуса .. Вы должны установить фокус перед съемкой фото, вы не может этого сделать потом – s1m0n

+0

Где вы видите код фотосъемки в моем вопросе? – LightNight

+0

Подождите, я получаю это правильно: вы хотите установить точку фокусировки фотографии в кадре камеры? – s1m0n

ответ

0

Вы должны проверить, если setFocusPointOfInterest принимается с помощью [device focusPointOfInterestSupported] как не все IOS устройства поддерживают его, и если я правильно помню, он отличается от передней/задней камеры, а

0

Что сказал JoeCortoPassi.

так что в принципе, цикл if, чтобы проверить, что [device focusPointOfInterestSupported] возвращает true, тогда сделайте свое [устройство setFocusPointOfInterest: CGPointMake (100, 100)];

EDIT:

код будет что-то вроде:

if ([device isFocusPointOfInterestSupported]){ 
    [device setFocusPointOfInterest:CGPointMake(100, 100)]; 
}else{ 
    // Not supported 
} 

надеюсь, что это помогает!

+1

Вы должны нормализовать CGPoint до шкалы 0-1. https://developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/04_MediaCapture.html – Keller

0

Комбинация ответов, но это должно помочь вам.

Вам необходимо преобразовать точку касания от начатых касаний или коснуться жестов до шкалы 0-1.

Таким образом, проверить, если устройство имеет фокус, а затем преобразовать точку:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    // get device reference... 

    if ([device isFocusPointOfInterestSupported]) { 
     CGPoint point = [touch locationInView:self.myCameraView]; 
     float newX = point.x/self.myCameraView.frame.size.width; 
     float newY = point.y/self.myCameraView.frame.size.height; 
     [device setFocusPointOfInterest:CGPointMake(newX, newY)]; 
    } 
    else { 
     // Focus not supported 
    } 
} 
Смежные вопросы