Панель навигации UINavigationController не будет уменьшаться в ландшафтном режиме.

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

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

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


person Daniel says Reinstate Monica    schedule 08.01.2011    source источник


Ответы (2)


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

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

[window addSubview:self.yourNavController.view];


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

person mrueg    schedule 10.01.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);
    }
}
person Bittu    schedule 10.01.2011