0

Я заставил мое приложение запускаться только в ландшафтном режиме вместо портрета. На экране я открываю камеру для записи видео в UIView с использованием AVFoundation. Но его ориентация не меняется как ландшафт. Идеи?Как запустить камеру в ландшафтном режиме

- (void) CameraSetOutputProperties 
{ 
//SET THE CONNECTION PROPERTIES (output properties) 
AVCaptureConnection *CaptureConnection = [MovieFileOutput connectionWithMediaType:AVMediaTypeVideo]; 

//Set landscape (if required) 
if ([CaptureConnection isVideoOrientationSupported]) 
{ 
    AVCaptureVideoOrientation orientation = AVCaptureVideoOrientationLandscapeRight; //<<<<<SET VIDEO ORIENTATION IF LANDSCAPE 
    [CaptureConnection setVideoOrientation:orientation]; 
} 
} 

//

- (void)initializeCamera { 
captureSession = [[AVCaptureSession alloc]init]; 
captureSession.sessionPreset = AVCaptureSessionPresetHigh; 

_previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:captureSession]; 
[_previewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill]; 
    .... 

if (!frontCamera) { 
    NSError *error = nil; 
    AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:backCamera error:&error]; 
    if (!input) { 
     NSLog(@"ERROR: trying to open camera: %@", error); 
    } 
    [captureSession addInput:input]; 
} 
if (frontCamera) { 
    NSError *error = nil; 
    AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:frontCamera error:&error]; 
    if (!input) { 
     NSLog(@"ERROR: trying to open camera: %@", error); 
    } 
    [captureSession addInput:input]; 
} 

[captureSession startRunning]; 
+0

Изменяет ориентацию или видео не меняет ориентацию? – Sandeep

+0

, когда я запускаю приложение на пейзаж, ориентация видео не подходит. Кажется, все еще на портрете (верхняя или нижняя кнопка дома). @GeneratorOfOne –

ответ

0

Если ваши изменения ориентации, но ориентация вашего видео остается, то же самое, то вы должны также изменить свойство videoOrientation вашего AVCaptureConnection, в

Вы можете использовать это, используя viewWillTransitionToSize: сTransitionCoordinator: метод as,

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) { 
     super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator) 

     if size.width > size.height { 
      capturePreviewLayer.connection.videoOrientation = .LandscapeLeft 
     } else { 
      capturePreviewLayer.connection.videoOrientation = .Portrait 
     } 
    } 

И это должно работать на ваш случай.