自定义iOS 7中的导航栏 - 标题颜色不起作用

时间:2013-10-15 23:28:08

标签: objective-c swift ios7 uinavigationcontroller uinavigationbar

我正在尝试在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];

导航栏半透明关闭并且很暗,但标题也会保持黑暗。我也尝试创建一个自定义标签,并将其设置为标题视图,运气不佳。

如何更改标题颜色?

8 个答案:

答案 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)

在Swift 4中

NSForegroundColorAttributeName 重命名为 NSAttributedString.Key.foregroundColor

因此,如果您要更改navigationItem标题的颜色:

let navBarAppearance = self.navigationController!.navigationBar    
navBarAppearance.titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.white]


我使用了 UIColor.white ,只需插入您想要标题的任何 UIColor