как изменить высоту UINavigationBar - PullRequest
2 голосов
/ 06 июля 2011

Эта проблема искалечила меня больше суток.Мне нужно изменить высоту UINavigationBar.

UINavigationController создается в AppDelegate следующим образом.

self.navigationController = [[UINavigationController alloc] initWithRootViewController:mainController];
[self.window addSubview:self.navigationController.view];
[self.window makeKeyAndVisible];

Высота панели навигации БУДЕТ изменяться и придерживаться, если ядобавьте [self.navigationController.navigationBar setFrame: newFrame] в viewDidAppear , как показано ниже:

- (void)viewWilAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    CGRect newFrame = CGRectMake(0, 0, 320, 100);
    [self.navigationController.navigationBar setFrame:newFrame]
}

HOWEVER , если я сделаю это таким образом, вы можетена самом деле вижу, как кадр защелкивается от исходных 44px до высоты 100px за доли секунды, которые загружает представление, что очень раздражает.

Я попытался добавить [navBar setFrame:] в viewDidload , viewWillAppear rootViewController, а также AppDelegate сразу после того, как я запускаю UINavigationController.Ничего из этого не работает.

Просто чтобы вы знали, я переопределил прямой метод drawRect: (CGRect) в категории UINavigationBar, чтобы сделать фоновый цвет сплошным черным, используя приведенный ниже код, но я не думаю, чтоимеет какое-то отношение к проблеме.

[[UIColor blackColor] set];
CGContextFillRect(UIGraphicsGetCurrentContext(), rect);

Кто-нибудь знает лучший способ сделать это?

1 Ответ

1 голос
/ 06 июля 2011

«Используйте панель инструментов вместо панели навигации, если вам нужно предложить больший набор элементов управления, или вам не нужно включать навигацию».- Из Руководства по интерфейсу пользователя iOS * в разделе «Панель навигации / Рекомендации».

...