Моя проблема заключается в следующем: я хочу разрешить портретную ориентацию только для всех моих ViewController, кроме 1 ViewController, который должен разрешать как портретную, так и альбомную лево/право. Теперь я потратил почти 2 дня на то, как установить ориентацию в IOS для разных слайдов/ViewController. После некоторого поиска я нашел этот поток здесь, в стеке: Проблемы вращения UITabBarController в ios 6а>
Я последовал примеру Кунани в той ветке, которую опубликую здесь, чтобы сэкономить время всем читателям:
Зак, я столкнулся с той же проблемой. Это потому, что ваш viewController встроен в контроллер TabBar или UINavigationController, и вызовы этих методов происходят внутри них, а не в вашем обычном представлении (изменено в iOS6). Я столкнулся с этой проблемой, потому что я представлял viewController, встроенный в UINavigationController, во всех моих модальных представлениях, которые имели переход к различным представлениям (процесс регистрации, вход и т. д.). Мое простое исправление состояло в том, чтобы создать CATEGORY для UINavigationController, который включает эти два метода. В любом случае я должен Autorotate возвращать НЕТ, потому что я не хочу, чтобы мои модальные представления вращались. Ваше решение может быть таким простым, попробуйте. Надеюсь, поможет. Я создал категорию и назвал ее autoRotate и выбрал опцию UINavigationController. Файл M+H находится ниже.
#import "UINavigationController+autoRotate.h"
@implementation UINavigationController (autoRotate)
-(BOOL)shouldAutorotate {
return NO;
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
@end
... и категория .h:
#import <UIKit/UIKit.h>
@interface UINavigationController (autoRotate)
-(BOOL)shouldAutorotate;
- (NSUInteger)supportedInterfaceOrientations;
@end
Я сделал то, что он сказал, и попытался установить категорию для моего UITabBarController, который сработал, все классы, подключенные к tabBar, теперь допускают только ориентациюPortrait. Но если вы посмотрите на следующую картинку
(скриншот из моего проекта) в середине StoryBoard есть класс под названием ShowTaskView. Этот класс связан с большинством классов (которые напрямую связаны с UITabBarController) через UINavigationController. Даже если я установлю UITabBarController только для портрета, ShowTaskView, похоже, будет затронут этим правилом, и я не могу заставить его вращаться. Схему в моем проекте тоже можно описать так:
TabBarController ----> UINavigationController -------> class X ----------> class ShowTaskView
Что я могу сделать отсюда, если я хочу, чтобы мои классы были подключены к tabBarController только для того, чтобы разрешать ориентациюPortrait, а остальные классы допускали как книжную, так и альбомную ориентацию в зависимости от того, как построен мой проект? Я очень расстроен этой проблемой, потому что ее чертовски сложно решить :/
С Уважением