iPhone принудительное вращение - PullRequest
5 голосов
/ 22 января 2010

Я читаю тонну вращения, но не могу найти решение для моего запроса. Здесь идет:

У меня есть портретное приложение с вкладкой и скрытым контроллером навигации в моей вкладке. В какой-то точке приложения следующее представление должно быть альбомным.

Макет XIB выполнен в альбомной ориентации, поэтому я хочу вызвать xib без какого-либо перевода или перемещения пиксельного кода. (не думая, что это необходимо) Я попытался просто нажать на вид (остается в портретной ориентации), сдвигать вид, используя различные методы (кажется, что они не выстраиваются правильно).

Есть ли способ сказать представлению, что оно уже выложено для ландшафта до его открытия?

Заранее спасибо!

Ответы [ 2 ]

7 голосов
/ 22 января 2010

Нашел, этот код добивается цели в viewdidload:

self.view.transform = CGAffineTransformIdentity;
self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(90));
self.view.bounds = CGRectMake(0.0, 0.0, 460.0, 320.0);

Еще есть 1 странная вещь. Независимо от того, что я делаю, чтобы скрыть панель навигации, она не вращается и остается с левой стороны вида.

[[self navigationController] setNavigationBarHidden:YES animated:NO];

Кто-нибудь посеял такое поведение и решил?

3 голосов
/ 22 января 2010

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

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

Код, который вы разместили, будет работать для вашего просмотра. Вы вообще не меняете ориентацию; ваш взгляд ведет себя так, как будто он вращается, рисуя повернутым способом. Я не уверен, можете ли вы сделать то же самое с панелью навигации или нет, но это стоит попробовать. Если вы можете управлять свойствами представления на панели навигации (это также UIView), то будет работать тот же шаблон, который вы используете для своего пользовательского представления.

Большинство приложений, которые хотят, чтобы представление было только в альбомной ориентации, в конечном итоге заставляют все приложение работать в альбомной ориентации. Например, Flight Control поддерживает только одну ориентацию. Таким образом, код рисования довольно прост; независимо от ориентации, просто нарисуйте вид и поверните его в ту ориентацию, которую он поддерживает (либо влево, либо вправо).

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

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