iphone не может вращать представления в контроллере TabBar - PullRequest
0 голосов
/ 18 июня 2010

Я работаю над приложением, которое состоит из контроллера TabBar. На одной из его вкладок у меня есть подкласс UITableViewController, в этом списке у меня есть график Core-plot в первой ячейке и некоторые другие данные в 4 следующих ячейках. Когда я возвращаю YES в методе shouldAutorotateToInterfaceOrientation, я ожидаю, что произойдет автоматическое изменение размера представления списка, но ... ничего. Когда я добавляю некоторые журналы в метод willRotateToInterfaceOrientation, они не отображаются. Я что-то пропустил? Большое спасибо, Люк

// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
//return (interfaceOrientation == UIInterfaceOrientationPortrait);
NSLog(@"Orientation");
return YES;
}
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
[super willRotateToInterfaceOrientation:toInterfaceOrientation  duration:duration];

NSLog(@"Rotating");

if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight)
{
    NSLog(@"view land:%@", self.view);
}

if (toInterfaceOrientation == UIInterfaceOrientationPortrait)
{
    NSLog(@"view portrait:%@", self.view);
} 
}

Ответы [ 2 ]

2 голосов
/ 18 июня 2010

Да, он не будет работать, если вы не создадите подкласс UITabBarController и не переопределите его метод shouldAutorotateToInterfaceOrientation:.

См. мой вопрос здесь и связанные с ним ответы .

0 голосов
/ 14 сентября 2012
add this method in category 
@implementation UITabBarController(UITabBarControllerCategory)

-(BOOL)shouldAutorotateToInterfaceOrientation:
(UIInterfaceOrientation)toInterfaceOrientation
{
  AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate];

  if ([AppDelegate isLandScapeOnly]){
    return NO;
 }
return YES;
}
...