поддержка режима портретной ориентации для UIViewController в раскадровке

Я создал UIViewController с помощью раскадровки и связал его с классом UIViewController.

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

Нужно ли мне изменять какое-либо свойство в раскадровке?

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

     return ((interfaceOrientation == UIInterfaceOrientationPortrait) || (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown));
}

person user836026    schedule 27.03.2013    source источник


Ответы (2)


shouldAutorotateToInterfaceOrientation устарело в iOS6, вы должны использовать shouldAutoRotate и supportedInterfaceOrientations.

Попробуйте так в своем viewController.

- (BOOL)shouldAutorotate {
    return NO;
}

- (BOOL)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
}
person nsgulliver    schedule 27.03.2013
comment
Я пробовал, но он все еще вращается... мне нужно что-то делать в раскадровке? - person user836026; 27.03.2013
comment
В настройках вашего проекта вы можете установить поддерживаемую ориентацию только на Портрет. - person nsgulliver; 27.03.2013
comment
да, но у меня есть другой UIViewController, который также требует поддержки ландшафтного режима. - person user836026; 27.03.2013

Я нашел ответ здесь: iOS 6 shouldAutorotate: НЕ вызывается

мой UIViewController управляется UINavigationController, который управляет его ориентацией в iOS 6:

Теперь контейнеры iOS (такие как UINavigationController) не обращаются к своим дочерним элементам, чтобы определить, следует ли им выполнять автоповорот. По умолчанию ориентация интерфейса, поддерживаемая приложением и контроллером представления, устанавливается на UIInterfaceOrientationMaskAll для идиомы iPad и UIInterfaceOrientationMaskAllButUpsideDown для идиомы iPhone.

Мне пришлось создать подкласс UINavigationController с новыми параметрами shouldAutorotate и supportedInterfaceOrientations.

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

person user836026    schedule 27.03.2013
comment
Хорошо, если вы решили свою проблему. вы не упомянули о navigationcontroller, я несколько раз отвечал на такие вопросы о подклассах - person nsgulliver; 27.03.2013
comment
извините .. я не знал, когда задавал вопрос, имеет ли значение, когда UIViewControlor управляется навигационным контроллером. - person user836026; 30.03.2013