Это один из способов сделать это. Вероятно, вам будет проще 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
person
Amit Shah
schedule
16.02.2012