Панель навигации UINavigationController не будет уменьшаться в ландшафтном режиме - PullRequest
3 голосов
/ 08 января 2011

Панель навигации моего навигационного контроллера не будет изменять высоту при повороте на альбомную ориентацию.alt text

вижу, что он остается на 44 пикселях вместо 34, я думаю.

Что мне сделать, чтобы это исправить?

Ответы [ 2 ]

5 голосов
/ 10 января 2011

Вы должны добавить свой навигационный контроллер непосредственно в качестве подпредставления к окну, иначе это не будет работать автоматически. (Нет необходимости менять рамку панели навигации вручную.)

Метод -[application:didFinishLaunchingWithOptions:] вашего AppDelegate должен содержать что-то вроде

[window addSubview:self.yourNavController.view];


Чтобы получить пример, где это работает автоматически, вы также можете создать новое приложение на основе навигации в XCode и добавить реализацию для метода shouldAutorotateToInterfaceOrientation: в RootViewController, который всегда возвращает YES.

0 голосов
/ 10 января 2011

Во время метода autoRotation вашего класса измените фрейм вашего navBar следующим образом:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{
    if((self.interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || (self.interfaceOrientation == UIInterfaceOrientationLandscapeRight))
    {
         self.navigationController.navigationBar.frame = CGRectMake(0,0,480,32);
    }
    else if((self.interfaceOrientation == UIInterfaceOrientationPortrait) || (self.interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown))
    {
         self.navigationController.navigationBar.frame = CGRectMake(0,0,320,44);
    }
    else
    {
         assert(false);
    }
}
...