我正在尝试在iOS7中自定义导航控制器的navigationBar,标题颜色不会改变。我正在做以下事情:
[navigationController.navigationBar setBarTintColor:[UIColor colorWithRed:46.0f/256.0f green:46.0f/256.0f blue:46.0f/256.0f alpha:1]];
[navigationController.navigationBar setTranslucent:NO];
[navigationController.navigationBar setTitleTextAttributes:@{[UIColor whiteColor]:UITextAttributeTextColor}];
[self presentViewController:navigationController animated:YES completion:nil];
导航栏半透明关闭并且很暗,但标题也会保持黑暗。我也尝试创建一个自定义标签,并将其设置为标题视图,运气不佳。
如何更改标题颜色?
答案 0 :(得分:65)
外观api继续发展,UITextAttributeTextColor现在替换为NSForegroundColorAttributeName。
[navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
我会添加两件事:
首先是关键,然后是对象。
如果要全局更改导航控制器的标题属性,请使用外观api:
[[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor whiteColor]}];
我将这个外观api调用放在你的app delegate的didFinishLaunchingWithOptions方法中。
更新:不妨发布Swift等价物。
要更新单个视图控制器的navigationBar,可以使用:
self.navigationController.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()]
要在整个应用中更改导航栏的外观,可以使用:
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()]
答案 1 :(得分:11)
不适合我。 使用UINavigation作为模态视图控制器。
显然标题颜色需要设置为uiapplication level
编辑:
最好的方法是更改每个VC上下文中的导航标题:
[self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], NSForegroundColorAttributeName,nil]];
答案 2 :(得分:7)
[navigationController.navigationBar setBarStyle:UIBarStyleBlack];
答案 3 :(得分:4)
在swift中,您将执行以下操作:
self.navigationController.navigationBar.titleTextAttributes = [
NSForegroundColorAttributeName : UIColor.redColor(),
NSFontAttributeName : UIFont.systemFontOfSize(20)
]
答案 4 :(得分:4)
Swift + UIAppearance版本:
UINavigationBar.appearance().barTintColor = .blackColor()
UINavigationBar.appearance().barStyle = .Black
答案 5 :(得分:3)
OP代码中的问题是这一行:
[navigationController.navigationBar setTitleTextAttributes:@{[UIColor whiteColor]:UITextAttributeTextColor}];
文本颜色属性名称和值混合在一起。它应该是
[navigationController.navigationBar setTitleTextAttributes:@{UITextAttributeTextColor:[UIColor whiteColor]}];
答案 6 :(得分:0)
实际上看起来像个bug。试试
myViewcontroller.title = @"";
navigationController.navigationBar.barStyle = UIBarStyleBlack;
myViewcontroller.title = @"TITLE";
作品。
答案 7 :(得分:0)
NSForegroundColorAttributeName 重命名为 NSAttributedString.Key.foregroundColor
let navBarAppearance = self.navigationController!.navigationBar
navBarAppearance.titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.white]
我使用了 UIColor.white ,只需插入您想要标题的任何 UIColor 。