Подтвердить что ты не робот

Force UIViewController показывать только в ландшафтном режиме

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

4b9b3361

Ответ 1

Извините, но этот ответ будет очень коротким: если вы используете UINavigationController, вы не можете. Поэтому ответ @jer является неверным. В документации Apple указано:

Все контроллеры детского представления в вашем UITabBarController или UINavigationController не согласны с общим набором ориентации.

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

Единственное решение, которое у вас есть, - это выбросить UINavigationController и переписать его с чем-то своим.

Ответ 2

Если вы представляете и отклоняете контроллер вида, вы можете принудительно настроить ориентацию. Установите анимацию на "НЕТ", и вы можете сделать это, даже если пользователь даже не осознает, что это произошло.

Вы можете узнать больше об этом ответе Джоша на Есть ли документальный способ установки ориентации iPhone?

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

Ответ 3

Вы реализуете shouldAutorotateToInterfaceOrientation: и возвращаете только YES для UIInterfaceOrientationIsLandscape(param), где param - это параметр, который вы указали для этого метода.

Это будет поддерживать пейзаж влево и вправо, вместо того, чтобы блокировать вас только с одной ориентацией ландшафта.