Это один из способов сделать это.Возможно, вам просто будет проще ViewController
, если вам когда-нибудь понадобится изменить его, добавьте строку:
self.navigationController.navigationBar.tintColor = [UIColor redColor];
Использование категории для одной строки, вероятно, излишне.
РЕДАКТИРОВАТЬ:Если вы хотите использовать категорию, вам может потребоваться позвонить setNeedsDisplay
на панели навигации.или переопределить другой метод и вызвать его.Примерно так:
[self.navigationController.navigationBar setNeedsDisplay];
Также согласно документации Apple
В iOS 5 реализации UINavigationBar, UIToolbar и UITabBar изменились, так что drawRect: метод не вызывается, если он не реализован в подклассе.Приложения, которые повторно реализовали drawRect: в категории любого из этих классов, обнаружат, что метод drawRect: не вызывается.UIKit выполняет проверку ссылок, чтобы не вызывать метод в приложениях, связанных до iOS 5, но не поддерживает этот дизайн в iOS 5 или более поздней версии.Приложения могут либо:
- Использовать API настройки для баров в iOS 5 и новее, что является предпочтительным способом.
- Подкласс UINavigationBar (или другие классы баров) и переопределить drawRect:в подклассе.
Поэтому лучший способ сделать это - поместить это в ваш ApplicationDidFinishLaunching
NSString *reqSysVer = @"5.0";
NSString *currSysVer = [[UIDevice currentDevice] systemVersion];
if ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending)
[[UINavigationBar appearance] setTintColor:myColor];
, а также оставить свой DrawRect
, чтобы на iOS он работал меньше 5