如何在iOS 7或6中更改导航栏颜色?

64
我想要更改导航栏的颜色,但我不确定是否应该更改色调或背景。我知道iOS 7正在朝着更加扁平化的设计方向发展(甚至建议去除渐变效果),但我很难分辨这两者之间的区别。即使我设置了背景颜色,也没有任何变化。
在这张图片中,背景设为绿色,但条形区域仍然是蓝色的: 输入图像描述

https://dev59.com/n2Mk5IYBdhLWcg3w0hM-#18929980 - Rajneesh071
16个回答

2
    you can add bellow code in appdelegate.m .if your app is navigation based

    // for background color
   [nav.navigationBar setBarTintColor:[UIColor blueColor]];

    // for change navigation title and button color
    [[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor],
    NSForegroundColorAttributeName,               
    [UIFont fontWithName:@"FontNAme" size:20],
    NSFontAttributeName, nil]];
    [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];

1
我正在使用以下代码(C#语言)来改变NavigationBar的颜色:
NavigationController.NavigationBar.SetBackgroundImage (new UIImage (), UIBarMetrics.Default);
NavigationController.NavigationBar.SetBackgroundImage (new UIImage (), UIBarMetrics.LandscapePhone);
NavigationController.NavigationBar.BackgroundColor = UIColor.Green;

技巧在于你需要去掉默认的背景图片,然后颜色就会出现。

你的代码可以用于导航栏,但是你能否将相同的背景应用到状态栏上? - axelcdv
据我所知,在iOS6中,您无法更改状态栏的颜色。您只能使其“半透明”。在iOS7中,您可以通过NavigationBar的背景图像来更改状态栏的颜色。在iOS7中,我使用了1x1像素图像作为NavigationBar背景图像,并且它会自动扩展到状态栏(正如苹果官方iOS7文档中所描述的那样)。 - tomec

1

在iOS7中,如果您的导航控制器包含在选项卡栏、分割视图或其他容器中,则全局更改导航栏外观,请使用以下方法:

[[UINavigationBar appearanceWhenContainedIn:[UITabBarController class],nil] setBarTintColor:[UIColor blueColor]];

1

0
在您的ViewController.m的- (void)viewDidLoad中尝试下面的代码:
[[[self navigationController] navigationBar] setTintColor:[UIColor yellowColor]];
这在iOS 6中对我有效。试试吧。

-4

我不确定改变色调和背景颜色哪个更好,但这是如何改变导航栏色调颜色的方法:

尝试使用以下代码:

[navigationController.navigationBar setTintColor:[UIColor redColor]; //以红色为例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接