2014-09-12 4 views
1

У меня странная проблема. Я записываю видео в своем приложении. Все работает нормально, пока я не поворачиваю устройство на 180 градусов. Неважно, в каком ландшафтном режиме я начинаю игру, видео запускается правильно, но как только я поворачиваюсь, например, из пейзажа слева, чтобы видео начало записываться по вертикали. Я сделал ничью, чтобы показать: enter image description hereAVCaptureVideoPreviewLayer неправильная ориентация

Я пытаюсь установить видео ориентацию подобное: - (BOOL) shouldAutorotate {

UIInterfaceOrientation orientation = [[UIDevice currentDevice] orientation]; 
if (orientation == UIInterfaceOrientationLandscapeLeft) { 
    NSLog(@"Left"); 
    captureVideoPreviewLayer.connection.videoOrientation = AVCaptureVideoOrientationLandscapeLeft; 
    return YES; 
} 
else if(orientation == UIInterfaceOrientationLandscapeRight) { 
    NSLog(@"Right"); 
    captureVideoPreviewLayer.connection.videoOrientation = AVCaptureVideoOrientationLandscapeRight; 
    return YES; 
} 

return NO; 

} Но это, похоже, не работает вообще. Я установил captureVideoPreviewLayer.frame = self.view.bounds; Все еще не работает

ответ

1

Что вы сделали правильно, за исключением того, что я не уверен в вашей ориентации. Я думаю, что это должно быть

UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation; 

Вот полный метод, который вы могли бы попробовать, вызвав его из shouldAutorotate метода:

- (void)autoRotateVideoOrientation { 
    UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation; 
    switch (orientation) { 
     case UIInterfaceOrientationPortrait: 
      captureVideoPreviewLayer.connection.videoOrientation = AVCaptureVideoOrientationPortrait; 
      break; 
     case UIInterfaceOrientationPortraitUpsideDown: 
      captureVideoPreviewLayer.connection.videoOrientation = AVCaptureVideoOrientationPortraitUpsideDown; 
      break; 
     case UIInterfaceOrientationLandscapeLeft: 
      captureVideoPreviewLayer.connection.videoOrientation = AVCaptureVideoOrientationLandscapeLeft; 
      break; 
     case UIInterfaceOrientationLandscapeRight: 
      captureVideoPreviewLayer.connection.videoOrientation = AVCaptureVideoOrientationLandscapeRight; 
      break; 
     default: 
      break; 
    } 
} 
+0

'statusBarOrientation' нежелателен из прошивки 9.0. – rmaddy

Смежные вопросы