问题
I have an app which have a UINavigationBar
and I have set the tint color to black like this:
self.navigationController.navigationBar.tintColor = [UIColor blackColor];`
I have tested it in IOS 6 and it's black. However, it appears as the default navigation bar when I tried the same app in iOS 7.
As the title says, is it not working?
回答1:
You need to set the barTintColor property.
You can specify a custom tint color for the navigation bar background using the Tint (barTintColor) field. The default background tint color is white.
From iOS7 docs: https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/UIKitUICatalog/UINavigationBar.html#//apple_ref/doc/uid/TP40012857-UINavigationBar-SW1
回答2:
Fernando's and sanjana's answers have the key, but I'll just add something to make it clearer and more obvious.
The navigation bar has two properties
- tintColor
- barTintColor
It's a bit misleading when you don't think in iOS 7 terms.
tintColor
changes the color of the buttons on your navigation bar.
To change the background color, you need to set the property barTintColor
.
self.navigationController.navigationBar.barTintColor = [UIColor whiteColor];
self.navigationController.navigationBar.tintColor = [UIColor greenColor];
This code snippet will give you a white navigation bar with green buttons.
回答3:
I used following code to change tint color of navigation bar in iOS7,I added this in app delegate "applicationDidFinishLaunch" method and its work fine for me :
/* ios 7 Change */
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7)
{
[[UINavigationBar appearance] setBarTintColor:UIColorFromRGB(0x4B678B)];
NSShadow *shadow = [[NSShadow alloc] init];
shadow.shadowColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8];
shadow.shadowOffset = CGSizeMake(0, 1);
[[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:
[UIColor colorWithRed:245.0/255.0 green:245.0/255.0 blue:245.0/255.0 alpha:1.0], NSForegroundColorAttributeName,
shadow, NSShadowAttributeName,
[UIFont fontWithName:@"Helvetica Neue" size:21.0], NSFontAttributeName, nil]];
// self.navigationController.navigationBar.barTintColor = [UIColor blueColor];
//[self.navigationController.navigationBar setBarStyle:UIBarStyleBlackTranslucent];
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
}
回答4:
Following code is working for me :
self.navigationController.navigationBar.barTintColor = [UIColor blackColor];
回答5:
Had the same issue, but solved it via storyboard file.
Try the following.
- Open your .storyboard file.
- Select the scene with navigation controller
Select Navigation Bar item into Navigation Controller scene
Open the Utilities tab on the right side of XCode
- Open Attributes Inspector
- In "Navigation Bar" group there will be Bar Tint dropdown list. You can choose any color for a tint.
回答6:
[UINavigationBar appearance].tintColor = [UIColor redColor];
if ([[UINavigationBar appearance] respondsToSelector:@selector(setBarTintColor:)]) {
[UINavigationBar appearance].barTintColor = [UIColor redColor];
}
//OR
self.navigationController.navigationBar.tintColor = [UIColor redColor];
if ([self.navigationController.navigationBar respondsToSelector:@selector(setBarTintColor:)]) {
self.navigationController.navigationBar.barTintColor = [UIColor redColor];
}
来源:https://stackoverflow.com/questions/17041778/uinavigationbar-set-tintcolor-tested-in-ios7-not-working