Автоповорот представлений iOS7

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

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

- (BOOL)shouldAutorotate
{
   return NO;
}

- (NSUInteger)supportedInterfaceOrientations
{
   return UIInterfaceOrientationMaskPortrait;
}  

этот код - в контроллере навигации или контроллере Tabbar или в AppDelegate.


person User382    schedule 21.07.2014    source источник
comment
Какой вид должен быть только портретным? Это вид входа?   -  person matt    schedule 21.07.2014


Ответы (1)


Если представление не является представлением входа в систему, вы не должны никуда добавлять этот код. iOS 7 не поддерживает отдельные дочерние элементы контроллера панели вкладок или контроллера навигации, имеющие специальную ориентацию.

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

(В iOS 8, поскольку он был засеян до этого времени, он не будет работать даже для представления входа в систему.)

person matt    schedule 21.07.2014
comment
Этот портретный вид не является видом входа в систему, это вид с панели вкладок. Вы имеете в виду, что я не могу иметь один элемент панели вкладок только в портретном режиме и другие элементы панели вкладок как в портретном, так и в ландшафтном режиме. - person User382; 21.07.2014
comment
Я имею в виду это. См., например, мой ответ здесь: stackoverflow.com/a/15301322/341994 То, что я говорю о навигационных контроллерах, одинаково верно для контроллеров панели вкладок. То, что вы описываете, возможно только в iOS 5 и более ранних версиях. - person matt; 21.07.2014
comment
Как создать, например, приложения только для альбомного просмотра, если выше указано верно. Если вы укажете поддерживаемую ориентацию устройства в Info.plist, она должна применяться ко всем представлениям, независимо от того, является ли это панелью вкладок, панелью навигации или представлением модели. - person User382; 22.07.2014
comment
Это верно. Если все приложение ограничено альбомной ориентацией, все приложение ограничено альбомной ориентацией. Но если один вид будет отображаться в портретной ориентации, вы не сможете этого сделать: все приложение должно разрешать альбомную и портретную ориентацию. И в этом случае никакое представление, кроме представленного представления, не может принудительно поворачивать. Прочитайте ответ, на который я вам указал, пожалуйста. Полное объяснение см. здесь: apeth.com/iOSBook/ch19.html#_rotation - person matt; 22.07.2014