我如何改变导航栏的颜色在iOS 7?
基本上我想要实现类似Twitter导航栏的东西(更新的Twitter为iOS7)。我在视图控制器的顶部嵌入了一个导航条。所有我想要的是改变导航栏的颜色为浅蓝色连同顶部的工具栏。我似乎在我的故事板中找不到一个选项。
我如何改变导航栏的颜色在iOS 7?
基本上我想要实现类似Twitter导航栏的东西(更新的Twitter为iOS7)。我在视图控制器的顶部嵌入了一个导航条。所有我想要的是改变导航栏的颜色为浅蓝色连同顶部的工具栏。我似乎在我的故事板中找不到一个选项。
当前回答
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationController.navigationBar.barTintColor = [UIColor blueColor];
}
其他回答
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
在一个基于导航的应用程序中,你可以把代码放在AppDelegate中。更详细的代码可以是:
// Navigation bar appearance (background and title)
[[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor titleColor], NSForegroundColorAttributeName, [UIFont fontWithName:@"FontNAme" size:titleSize], NSFontAttributeName, nil]];
[[UINavigationBar appearance] setTintColor:[UIColor barColor]];
// Navigation bar buttons appearance
[[UIBarButtonItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor textBarColor], NSForegroundColorAttributeName, shadowColor, NSShadowAttributeName, [UIFont fontWithName:@"FontName" size:titleSize], NSFontAttributeName, nil];
快速改变导航条颜色:
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)!
]
做最初的问题——得到旧的Twitter的导航栏外观,蓝色背景和白色文本——很容易做到,只需要使用Xcode中的界面生成器。
Using the Document Outline, select your Navigation Bar. In the Attributes Inspector, in the Navigation Bar group, change the Style from Default to Black. This changes the background colour of the Navigation and Status bars to black, and their text to white. So the battery and other icons and text in the status bar will look white when the app is running. In the same Navigation Bar group, change the Bar Tint to the colour of your liking. If you have Bar Button items in your Navigation Bar, those will still show their text in the default blue colour, so in the Attributes Inspector, View group, change the Tint to White Colour.
这应该能让你得到你想要的。下面是一个截图,可以让你更容易地看到在哪里进行更改。
注意,只改变条形颜色不会改变导航栏或状态栏的文本颜色。样式也需要改变。
在viewDidLoad中,设置:
self.navigationController.navigationBar.barTintColor = [UIColor blueColor];
更改(blueColor)为任何你想要的颜色。