iPad: блокировка ориентации UIView только в ландшафтном режиме - PullRequest
2 голосов
/ 31 мая 2011

Это требование для iPad. У меня есть UIView, который используется в качестве наложения камеры при запуске записи видео. Он устанавливается в UIImagePickerController, как показано ниже.

[self presentModalViewController:pickerController animated:NO];
pickerController.cameraOverlayView =myOwnOverlay;

Это мое требование, чтобы при вызове камеры для записи видео я предоставлял собственное наложение в UIImagePickerController. Я хочу заблокировать свою собственную UIView наложения камеры только в режиме LANDSCAPE, чтобы позволить пользователю записывать видео только в альбомном режиме, а не в портретном, это также является моим требованием к проекту. Я знаю о shouldAutorotateToInterfaceOrientation, который используется для UIViewController. Я использовал "[[UIDevice currentDevice] setOrientation: UIInterfaceOrientationLandscapeRight];" он блокируется в ландшафтном режиме, когда я запускаю эту камеру с собственным оверлеем UIView, но когда я поворачиваю устройство, UIView также поворачивается к Portrait. Я вообще не хочу портретного режима. Я пытался решить эту проблему, как показано ниже, но он не работает для UIView. Затем я увидел, что это возможно в UIviewController, но не в UIView. Но я должен иметь UIView для этой операции запуска камеры.

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{

return (interfaceOrientation==UIInterfaceOrientationLandscapeRight || interfaceOrientation==UIInterfaceOrientationLandscapeLeft);
}

Подскажите, пожалуйста, как я могу предоставить решение для блокировки ориентации для моего UIView?

Спасибо!

Ответы [ 3 ]

1 голос
/ 24 февраля 2012

Попробуйте это:

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 

{
    BOOL isLandscapeRight = (UIInterfaceOrientationLandscapeRight == interfaceOrientation);
    return isLandscapeRight;
}

А также необходимо установить ориентацию интерфейса info.plist в ваших приложениях на альбомную (правая домашняя кнопка)

1 голос
/ 01 июня 2013

Существует простое решение для этого В файле info.plist отредактируйте запись поддерживаемой ориентации интерфейса ipad.

enter image description here

1 голос
/ 02 июня 2011

Сомневаться в разрешении из APPLE, но если вы хотите, чтобы UIImagePickerController запускался (и оставался) в альбомной ориентации, используйте следующий код.

//Initialize picker

UIImagePickerController * picker = [[UIImagePickerController alloc] init];
   picker.delegate = self;


//set Device to Landscape. This will give you a warning. I ignored it.
//warning: 'UIDevice' may not respond to '-setOrientation:'


[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

//Set Notifications so that when user rotates phone, the orientation is reset to landscape.
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

//Refer to the method didRotate:   
[[NSNotificationCenter defaultCenter] addObserver:self
              selector:@selector(didRotate:)
               name:@"UIDeviceOrientationDidChangeNotification" object:nil];

//Set the picker source as the camera   
picker.sourceType = UIImagePickerControllerSourceTypeCamera;

//Bring in the picker view   
[self presentModalViewController:picker animated:YES];

Метод didRotate:

- (void) didRotate:(NSNotification *)notification

{
      //Maintain the camera in Landscape orientation
 [[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

}

Кредит для этого кода принадлежит UIImagePickerController в ландшафте

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...