Как сделать переход от альбомной ориентации к портретной iOS SDK

В навигационных контроллерах один экран имеет возможность воспроизводить видео, которое можно просматривать как в книжной, так и в альбомной ориентации, а затем, по завершении, в навигационный контроллер вставляется новый контроллер представления, но я ТОЛЬКО хочу показывать в портретной ориентации.

я пытался использовать

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait];

до и после перехода, но это не работает для меня. Строка состояния есть, но вид рисуется в альбомном формате.

Любые идеи, как это исправить?

Спасибо!

[ОБНОВЛЕНО] Ни один из обходных путей не сработал, поэтому я просто представил его модально, пока не найду лучшее решение.

Спасибо за ответы!


person ryanwils    schedule 14.07.2012    source источник


Ответы (3)


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

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

Этот конкретный контроллер представления будет работать только в портретном режиме. Это то, что вы хотели?

person bkbeachlabs    schedule 14.07.2012
comment
Извините, я должен был упомянуть раньше, у меня уже есть точно такой же код для вращения. В раскадровке я даже поставил «Портрет» для ориентации (не предполагается). Спасибо за ответ! Любые другие идеи? - person ryanwils; 14.07.2012

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

К сожалению, с тех пор мало что изменилось. Это все еще кажется открытой проблемой, и нет документированного способа ее исправить. Однако я нашел несколько обходных путей, которые, я думаю, вам подойдут:

  1. Представьте и закройте модальный контроллер представления:

    UIViewController *c = [[UIViewController alloc] init];
    [self presentModalViewController:c animated:NO];
    [self dismissModalViewControllerAnimated:NO];
    [c release];
    
  2. Поверните вид вручную.

  3. Нажмите и вытащите контроллер представления перед нажатием реального контроллера представления.

Сообщается, что все методы работают, но я их не проверял. Здесь вы найдете код и другие методы: есть документированный способ установить ориентацию iPhone?

person Erik B    schedule 14.07.2012
comment
Спасибо, сейчас проверю и отпишусь, как дела! - person ryanwils; 15.07.2012

Ни один из обходных путей не сработал, поэтому я просто представил его модально, пока не найду лучшее решение.

Спасибо за ответы!

(Также добавлено в исходный пост)

person ryanwils    schedule 31.07.2012