如何在iOS 7中更改导航栏的背景颜色

时间:2013-11-21 19:14:46

标签: ios objective-c uinavigationbar

我是Objective-C的新手,今天我尝试更改导航栏的颜色,这可以使用此代码:

appDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [[UINavigationBar appearance] setBarTintColor:UIColorFromRGB(0xf4f4f4)];

    return YES;
}

现在我尝试更改特定的ViewController导航栏,但这不起作用。

ViewController2.m:

- (void)viewDidLoad
{
    [super viewDidLoad];

    [[UINavigationBar appearance] setBarTintColor:UIColorFromRGB(0x363636)];
    self.navigationController.navigationBar.translucent = NO;
}

当我进入此ViewContoller时,他的导航颜色为f4f4f4,当我转到其他ViewController并返回时,它会将颜色更改为363636

为什么这在第一次不起作用? 有人可以向我解释一下......

(抱歉关于我的英文,谢谢。)

5 个答案:

答案 0 :(得分:16)

使用时

[UINavigationBar appearance] 

它会更改所有导航栏。在你的viewcontroller中,只需做

[self.navigationBar setBarTintColor:UIColorFromRGB(0x363636)];

答案 1 :(得分:3)

您可以实现Nathanael在视图控制器的-(void) viewDidLoad方法中所说的内容。但是,如果您正在使用故事板,您还可以选择navigation item并从File inspector更改色调颜色,而无需编码。

enter image description here

答案 2 :(得分:0)

使用导航栏的tintcolor属性更改颜色

答案 3 :(得分:0)

你可以尝试一下,我在我的AppDelegate中更改导航栏颜色,所以所有应用程序都有相同的颜色,但我必须在单个视图控制器中更改导航栏颜色,所以我这样做了:

AppDelegate中的

let color = UIColor(red:0.24, green:0.72, blue:0.28, alpha:1.0)
    UINavigationBar.appearance().tintColor = UIColor.whiteColor()
    UINavigationBar.appearance().barTintColor = color

并且在viewDidLoad的视图控制器中我有:

self.navigationController?.navigationBar.barTintColor = UIColor.blueColor()

viewWillDissappear这个:

super.viewWillDisappear(animated)

    let color = UIColor(red:0.24, green:0.72, blue:0.28, alpha:1.0)
    self.navigationController?.navigationBar.barTintColor = color

它将导航栏颜色返回到相同的颜色

答案 4 :(得分:0)

对于iOS 10,你可以像这样使用barStyle:

白条颜色:

self.navigationController.navigationBar.barStyle = UIBarStyleBlack;

黑色条纹:

self.navigationController.navigationBar.barStyle = UIBarStyleDefault;

需要在ViewDidLoad中设置BarStyle以进行正常的动画制作:)