Customizing navigationBar in iOS7 - title color not working
Solution 1
[navigationController.navigationBar setBarStyle:UIBarStyleBlack];
Solution 2
The appearance api continues to evolve, and UITextAttributeTextColor is now replaced with NSForegroundColorAttributeName.
[navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
I'll add two things:
The key comes first, then the object.
If you want to globally change your nav controller's title attributes, use the appearance api:
[[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor whiteColor]}];
I'd put that appearance api call in your app delegate's didFinishLaunchingWithOptions method.
UPDATE: Might as well post the Swift equivalents.
To update the navigationBar for an individual view controller, one can use:
self.navigationController.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()]
To change the navigation bar's appearance throughout an entire app, one can use:
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()]
Solution 3
Not working for me. Using UINavigation as a modal view controller.
Apparently title colour needs to be set uiapplication level
Edit:
Best way is to change the navigation title in each VC context:
[self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], NSForegroundColorAttributeName,nil]];
Solution 4
In swift you'll do the following:
self.navigationController.navigationBar.titleTextAttributes = [
NSForegroundColorAttributeName : UIColor.redColor(),
NSFontAttributeName : UIFont.systemFontOfSize(20)
]
Solution 5
Swift + UIAppearance version:
UINavigationBar.appearance().barTintColor = .blackColor()
UINavigationBar.appearance().barStyle = .Black
Live2Enjoy7
Updated on November 17, 2020Comments
-
Live2Enjoy7 over 3 years
I am trying to customize the navigationBar of a navigation controller in iOS7 and the title color is not changing. I am doing the following:
[navigationController.navigationBar setBarTintColor:[UIColor colorWithRed:46.0f/256.0f green:46.0f/256.0f blue:46.0f/256.0f alpha:1]]; [navigationController.navigationBar setTranslucent:NO]; [navigationController.navigationBar setTitleTextAttributes:@{[UIColor whiteColor]:UITextAttributeTextColor}]; [self presentViewController:navigationController animated:YES completion:nil];
The navigationBar translucency gets turned off and it is dark, but the title also stays dark. I've also tried to create a custom label and set it as the title view with not much luck.
How can the title color be changed?
-
Mark Semsel about 10 yearsYes, UINavigationBar - not UINavigationController. Thanks for the fix, lari.