Мое приложение работает в портретном режиме, но я хочу показать один экран в ландшафтном режиме только в виде графика. Что я могу добавить в мой uiviewcontroller, чтобы заставить его только в ландшафтном режиме?
Force UIViewController показывать только в ландшафтном режиме
Ответ 1
Извините, но этот ответ будет очень коротким: если вы используете UINavigationController, вы не можете. Поэтому ответ @jer является неверным. В документации Apple указано:
Все контроллеры детского представления в вашем UITabBarController или UINavigationController не согласны с общим набором ориентации.
Недавно я задал этот вопрос по щедрости, и мое приложение отклонилось в этом процессе. Прочитайте это здесь: Как ограничить авторотацию одной ориентацией для некоторых видов, разрешая все ориентации на других?
Единственное решение, которое у вас есть, - это выбросить UINavigationController и переписать его с чем-то своим.
Ответ 2
Если вы представляете и отклоняете контроллер вида, вы можете принудительно настроить ориентацию. Установите анимацию на "НЕТ", и вы можете сделать это, даже если пользователь даже не осознает, что это произошло.
Вы можете узнать больше об этом ответе Джоша на Есть ли документальный способ установки ориентации iPhone?
Я считаю это немного взломанным, но я успешно реализовал код, используя эту предпосылку, чтобы заставить любую ориентацию устройства.
Ответ 3
Вы реализуете shouldAutorotateToInterfaceOrientation:
и возвращаете только YES для UIInterfaceOrientationIsLandscape(param)
, где param
- это параметр, который вы указали для этого метода.
Это будет поддерживать пейзаж влево и вправо, вместо того, чтобы блокировать вас только с одной ориентацией ландшафта.