Во-первых, необходимо установить в вашем PLIST все ориентации ваше приложение поддерживает, то это можно сделать на вкладке «Общие» в проекте в разделе «Информация по развертыванию», например: 
Затем, вы можете использовать метод supportedInterfaceOrientations
,
Я предполагаю, что вы представляете контроллер представления модально, так просто заменить его на предлежащей ViewController, которые должны быть только в использовании портретной:
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
и в вашем представленном ViewController, который должен также поддерживает пейзаж, использование: (или любой другой ориентации маски вы хотели бы)
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskAllButUpsideDown;
}
PS - есть различное поведение для ViewController, который представлен модально и для ViewController, которые толкают в стеке navigationController:
- modalViewController будем называть его собственным
supportedInterfaceOrientations
, и будет поддерживать эти ориентации
- pushedViewController будет называть его навигационным контроллером
supportedInterfaceOrientations
и будет поддерживать эту ориентацию.
Так что, если вы представляя ViewController модальны, вам необходимо изменить свой собственный supportedInterfaceOrientations
, но если нажать эту ViewController, вам необходимо установить некоторую BOOL недвижимость в navigationController, поэтому он будет знать, какие ориентиры для опор , Я советую вам представить этот viewController модально, более естественно использовать modalViewController для разных ориентаций устройств.
P.S # 2: о shouldAutorotate
: если она возвращает 'НЕТ', чем supportedInterfaceOrientations
не называется, так вернуть 'YES'. Он говорит только, если автоматически вращаться, когда устройство вращается. если он возвращает «НЕТ», вам необходимо явно повернуть viewController.
Ну, я надеюсь, что я помог и не написать ответ, который полностью не рассматривается, что вы спросили ... :)
http://stackoverflow.com/questions/12775265/ios-6-shouldautorotate -и-не-бытие-попробовал это –
@Dheeraj Singh, к сожалению, ни один из методов не назвал. –
мы уже сделали то же самое для navigationController self.window.rootViewController = self.objNavigationController; –