Принудительная книжная ориентация при отправке нового представления в UINavigationViewController - PullRequest
4 голосов
/ 01 декабря 2009

У меня есть базовое приложение TabBar, которое поддерживает альбомную ориентацию только для одного специального представления (корневое представление UINaviagtionController). Теперь я хочу установить книжную ориентацию для всех других представлений для этого контроллера навигации. Я пытался использовать

[[UIDevice currentDevice] setOrientation:UIDeviceOrientationPortrait];

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

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

Есть ли подобный способ форсировать изменение ориентации?

1 Ответ

6 голосов
/ 01 декабря 2009

В настоящее время нет способа сделать это. Посмотрите на этот вопрос , у меня те же проблемы. В приложении с вкладками у вас должно быть все для автоматического поворота или ничего. Вы можете найти способы, позволяющие mustAutorotate отвечать по-разному для каждого представления, но на самом деле это не работает. Я не знаю, является ли это предполагаемым поведением или ошибкой, во всяком случае, единственное жизнеспособное решение, о котором я знаю (без использования недокументированного API), - это управлять вращением самостоятельно, и не полагаться на автоповорот.

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

// Rotates the view.
CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI/2);
self.view.transform = transform;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...