30

我正在尝试在 iOS7 中自定义导航控制器的导航栏,并且标题颜色没有改变。我正在执行以下操作:

    [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];

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

如何更改标题颜色?

4

8 回答 8

66

外观 api 不断发展,现在 UITextAttributeTextColor 已替换为 NSForegroundColorAttributeName。

[navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];

我将添加两件事:
首先是密钥,然后是对象。

如果要全局更改导航控制器的标题属性,请使用外观 api:

[[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor whiteColor]}];

我会将该外观 api 调用放在您的应用程序委托的 didFinishLaunchingWithOptions 方法中。

更新:不妨发布 Swift 等价物。

要更新单个视图控制器的导航栏,可以使用:

self.navigationController.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()]

要在整个应用程序中更改导航栏的外观,可以使用:

UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()]
于 2014-02-18T00:54:50.073 回答
12

不为我工作。使用 UINavigation 作为模态视图控制器。

显然标题颜色需要设置 uiapplication 级别

编辑:

最好的方法是在每个 VC 上下文中更改导航标题:

[self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], NSForegroundColorAttributeName,nil]];
于 2013-11-28T13:04:54.460 回答
8
[navigationController.navigationBar setBarStyle:UIBarStyleBlack];
于 2013-10-16T00:10:51.680 回答
4

迅速您将执行以下操作:

self.navigationController.navigationBar.titleTextAttributes = [
    NSForegroundColorAttributeName : UIColor.redColor(),
    NSFontAttributeName : UIFont.systemFontOfSize(20)
]
于 2015-02-19T10:55:20.297 回答
4

Swift + UIAppearance 版本:

    UINavigationBar.appearance().barTintColor = .blackColor()
    UINavigationBar.appearance().barStyle = .Black
于 2015-05-18T14:33:52.733 回答
3

OP代码中的问题是这一行:

[navigationController.navigationBar setTitleTextAttributes:@{[UIColor whiteColor]:UITextAttributeTextColor}];

文本颜色属性名称和值混淆了。它应该是

[navigationController.navigationBar setTitleTextAttributes:@{UITextAttributeTextColor:[UIColor whiteColor]}];
于 2014-02-17T13:34:36.997 回答
0

实际上看起来像一个错误。尝试

myViewcontroller.title = @"";
navigationController.navigationBar.barStyle = UIBarStyleBlack;
myViewcontroller.title = @"TITLE";

作品。

于 2013-12-28T05:25:25.120 回答
0

在斯威夫特 4

NSForegroundColorAttributeName重命名为NSAttributedString.Key.foregroundColor

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

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


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

于 2018-11-16T18:20:01.067 回答