Эта проблема искалечила меня больше суток.Мне нужно изменить высоту 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);
Кто-нибудь знает лучший способ сделать это?