Как сделать так, чтобы приложение полностью работало корректно для авторотации в iOS 6?
В iOS6 shouldAutorotateToInterfaceOrientation
устарела. Я пытался использовать supportedInterfaceOrientations
а также shouldAutorotate
заставить приложение работать правильно для автоповорота, но не удалось.
этот ViewController я не хочу вращать, но он не работает.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
-(BOOL)shouldAutorotate
{
return NO;
}
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
Есть идеи? Спасибо за любую помощь заранее!
2 ответа
Догадаться.
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;
}
Если вы используете контроллер панели вкладок вместо контроллера навигации в качестве корневого контроллера, вам необходимо аналогичным образом создать подкласс 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;
}