我如何改变导航栏的颜色在iOS 7?

基本上我想要实现类似Twitter导航栏的东西(更新的Twitter为iOS7)。我在视图控制器的顶部嵌入了一个导航条。所有我想要的是改变导航栏的颜色为浅蓝色连同顶部的工具栏。我似乎在我的故事板中找不到一个选项。


当前回答

如果你想使用十六进制代码,这里是最好的方法。

首先,在类的顶部定义它:

#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]

然后在“application didFinishLaunchingWithOptions”里面,放这个:

[[UINavigationBar appearance] setBarTintColor:UIColorFromRGB(0x00b0f0)];

把十六进制代码放在00b0f0的位置。

其他回答

颜色:

[[UINavigationBar appearance] setBarTintColor:[UIColor blackColor]];

的图像

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigationBar_320X44.png"] forBarMetrics:UIBarMetricsDefault];

tintColor对条形图的行为在ios7.0中发生了改变。它不再影响酒吧的背景。

从文档中可以看到:

barTintColor类引用

要应用于导航栏背景的色调。

@property(nonatomic, retain) UIColor *barTintColor

讨论 默认情况下,这种颜色是半透明的,除非你将半透明属性设置为NO。

可用性

支持iOS 7.0及以上版本。

中声明 UINavigationBar.h

Code

NSArray *ver = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
if ([[ver objectAtIndex:0] intValue] >= 7) {
    // iOS 7.0 or later   
    self.navigationController.navigationBar.barTintColor = [UIColor redColor];
    self.navigationController.navigationBar.translucent = NO;
}else {
    // iOS 6.1 or earlier
    self.navigationController.navigationBar.tintColor = [UIColor redColor];
}

我们也可以使用这个来检查iOS版本,正如iOS 7 UI过渡指南中提到的那样

if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
        // iOS 6.1 or earlier
        self.navigationController.navigationBar.tintColor = [UIColor redColor];
    } else {
        // iOS 7.0 or later     
        self.navigationController.navigationBar.barTintColor = [UIColor redColor];
        self.navigationController.navigationBar.translucent = NO;
    }

编辑 使用xib

快速改变导航条颜色:

self.navigationController?.navigationBar.barTintColor = UIColor.red

更改标题字体、大小、颜色:

self.title = "title"
self.navigationController?.navigationBar.titleTextAttributes = [
        NSAttributedString.Key.foregroundColor : UIColor.white,
        NSAttributedString.Key.font : UIFont(name: "Futura", size: 30)!
    ]

在基于导航的应用程序中,您可以更改颜色

NSArray *ver = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
if ([[ver objectAtIndex:0] intValue] >= 7) {
    self.navigationController.navigationBar.barTintColor = [UIColor colorWithRed:19.0/255.0 green:86.0/255.0 blue:138.0/255.0 alpha:1];
    self.navigationController.navigationBar.translucent = NO;
} else {
    self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:19.0/255.0 green:86.0/255.0 blue:138.0/255.0 alpha:1];
}

在viewDidLoad中,设置:

    self.navigationController.navigationBar.barTintColor = [UIColor blueColor];

更改(blueColor)为任何你想要的颜色。