2013-09-01 2 views
1

Я реализовал контроллер вида только для авторотации. Таким образом, этот вид контроллер, который я назвал RotatableViewController, реализует эти методы:Просмотр контроллера не авторотирует портрет вверх дном

- (UIInterfaceOrientation) preferredInterfaceOrientationForPresentation 
{ 
    return UIInterfaceOrientationPortrait; 
} 

- (NSUInteger) supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskAll; 
} 

- (BOOL) shouldAutorotate { 
    return YES; 
} 

Он должен авторотацией всех ориентации, я также проверил поддерживаемый интерфейс ориентацию в моей цели:

enter image description here

Но невероятно он не авторотируется в ориентации портатива вверху:

enter image description here

В чем может быть проблема?

PS С iOS 6.1 контроллер представлений создается через раскадровку.

ответ

2

Проблема заключается в том, что вы используете UINavigationController, который не поддерживает вверх стороной вниз по умолчанию на iPhone'ов. В качестве общего принципа разработки приложения для iPhone не должны поддерживать перевернутый конец (предположительно, поскольку переключатель «блокировка» блокирует ландшафтный режим на iPhone, в отличие от iPad). Перевернутая ориентация предназначена только для устройств iPad.

Вы могли бы решить проблему путем создания подклассов UINavigationController и использовать supportedInterfaceOrientations, который возвращает UIInterfaceOrientationMaskAll и указать, что в качестве базового класса для навигационного контроллера в раскадровке. Но я не должен этого делать, потому что приложения на iPhone вообще не поддерживают перевернутую портретную ориентацию.

1

У старых версий возникла проблема с UIInterfaceOrientationMaskAll. Не знаете, какую версию вы используете. Попробуйте переделать все ориентации.

- (NSUInteger) supportedInterfaceOrientations 
{ 
    return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskPortraitUpsideDown); 
} 
+0

По-прежнему та же проблема, кстати, это для iOS 6.1. –

+0

Хорошо. Правильно ли подключен ваш контроллер просмотра? self.window.rootViewController = self.viewController; – healthdev

+0

Да, я подключил его через раскадровку. –

Смежные вопросы