Как сделать приложение полностью работоспособным для авторотации в iOS 6?
В iOS6 shouldAutorotateToInterfaceOrientation
устарела. Я попытался использовать supportedInterfaceOrientations
и shouldAutorotate
, чтобы приложение работало правильно для авторотации, но не удалось.
этот ViewController я не хочу вращать, но он не работает.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
-(BOOL)shouldAutorotate
{
return NO;
}
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
Любые идеи?
Спасибо за любую помощь заранее!
Ответы
Ответ 1
Выяснил это.
1) подклассифицированный UINavigationController (верхний элемент управления иерархией будет контролировать ориентацию).
сделал его как self.window.rootViewController.
- (BOOL)shouldAutorotate
{
return self.topViewController.shouldAutorotate;
}
- (NSUInteger)supportedInterfaceOrientations
{
return self.topViewController.supportedInterfaceOrientations;
}
2), если вы не хотите, чтобы контроллер просмотра поворачивался
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
-(BOOL)shouldAutorotate
{
return NO;
}
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
3), если вы хотите, чтобы он мог поворачивать
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskAllButUpsideDown;
}
-(BOOL)shouldAutorotate
{
return YES;
}
Кстати, в соответствии с вашими потребностями, другой связанный метод:
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
return UIInterfaceOrientationMaskPortrait;
}
Ответ 2
Если вы используете контроллер панели вкладок вместо контроллера навигации в качестве вашего корневого контроллера, вам потребуется аналогичный подкласс UITabBarController.
Также синтаксис будет другим. Я успешно использовал следующее. Затем я успешно использовал приведенные выше примеры на контроллерах представлений, которые я хотел переопределить. В моем случае я хотел, чтобы основной экран не вращался, но у меня был экран часто задаваемых вопросов с фильмами, который я, естественно, хотел включить в альбомный вид. Отлично! Просто обратите внимание на изменение синтаксиса на self.modalViewController(вы получите предупреждение компилятора, если попытаетесь использовать синтаксис для контроллера навигации.) Надеюсь, это поможет!
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (BOOL)shouldAutorotate
{
return self.modalViewController.shouldAutorotate;
}
- (NSUInteger)supportedInterfaceOrientations
{
return self.modalViewController.supportedInterfaceOrientations;
}