NavigationBar 标题为黑色

Posted

技术标签:

【中文标题】NavigationBar 标题为黑色【英文标题】:NavigationBar title is coming in black color 【发布时间】:2013-06-28 07:08:02 【问题描述】:

我在我的应用程序中使用UINavigationBarUITabBar。 在第一个选项卡上,导航栏标题正确显示为具有默认背景颜色的白色标题,但在第二个选项卡上,它的工作方式不同。我没有使用任何代码来更改标题颜色或导航栏的tintColor

第一个视图:http://img407.imageshack.us/img407/7192/4go.png

第二个视图:

为什么第二个视图的UINavigationBar 标题用这种黑色绘制?

【问题讨论】:

我认为你应该在第二个视图中为导航栏标题设置颜色,看看 【参考方案1】:

一般情况下,您不能更改UINavigationBar Title 的默认颜色。如果您想更改 UINavigationBar Title 的颜色,则需要自定义 UINavigationBar。因此,为您的第二个 ViewController 编写代码以获得更多理解。

编辑:

搜索后发现You can change UINavigationBar的title color by

self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:UITextAttributeTextColor];

此代码适用于 iOS5 及更高版本。

【讨论】:

我试图改变标题的颜色,但它不起作用。如果我使用没有任何代码的新视图控制器,第二个视图控制器代码不会影响另一件事,同样的问题正在发生..... @rivan 如果你在 ios 5 上工作,然后把这段代码放在 ViewDidLoad 方法中我在我的项目上试过它对我有用:) 问题不在于为什么文本已经变色,而不是如何自定义它? @JamesP Yaa,这不是关于如何更改导航栏标题颜色的问题。 对于 iOS7,您必须将 UITextAttributeTextColor 更改为 NSForegroundColorAttributeName【参考方案2】:

上面的大部分建议现在都已弃用,供 iOS 7 使用 -

NSDictionary *textAttributes = [NSDictionary dictionaryWithObjectsAndKeys: 
                               [UIColor whiteColor],NSForegroundColorAttributeName, 
                               [UIColor whiteColor],NSBackgroundColorAttributeName,nil];

self.navigationController.navigationBar.titleTextAttributes = textAttributes;
self.title = @"Title of the Page";

此外,请查看 NSAttributedString.h 以了解可以设置的各种文本属性。

【讨论】:

这对我很有用。我正要发布此更新的 iO7 修复程序,投了反对票!【参考方案3】:

在 AppDelegate 中试试这个:

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

【讨论】:

谢谢。这才是正确答案。您希望在外观上设置它,就像在普通应用中一样,您确实希望所有导航栏看起来都一样。【参考方案4】:

这将允许您更改颜色

NSDictionary *navbarTitleTextAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                        [UIColor whiteColor],UITextAttributeTextColor, 
                                        [UIColor blackColor],      UITextAttributeTextShadowColor, 
                                        [NSValue valueWithUIOffset:UIOffsetMake(-1, 0)], UITextAttributeTextShadowOffset, nil];

[[UINavigationBar appearance] setTitleTextAttributes:navbarTitleTextAttributes];

【讨论】:

【参考方案5】:

将这段代码用于 iOS7,因为 UITextAttributeTextColor 已被弃用。

self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor orangeColor] forKey:NSForegroundColorAttributeName];

【讨论】:

【参考方案6】:

此代码更改所有导航栏的文本,使用此代码可以100% 自定义文本。

在 appDelegate 中:

 //custom text navBar
   [[UINavigationBar appearance] setTitleTextAttributes: 
   [NSDictionary dictionaryWithObjectsAndKeys:[UIColor colorWithRed:0x73/255.0 green:0x47/255.0 blue:0x41/255.0 alpha:1.0], UITextAttributeTextColor,
   [UIColor colorWithRed:0x1D/255.0 green:0x1D/255.0 blue:0x1B/255.0 alpha:1], UITextAttributeTextShadowColor,
   [NSValue valueWithUIOffset:UIOffsetMake(0, 1)],UITextAttributeTextShadowOffset, 
   [UIFont fontWithName:@"yourFont" size:20], UITextAttributeFont, nil]];

【讨论】:

当我使用您的代码时,它会将 firstview navigationController 标题更改为黑色,并且 firstNavigation 下的所有视图(推送视图后)均为白色。

以上是关于NavigationBar 标题为黑色的主要内容,如果未能解决你的问题,请参考以下文章

NavigationBar 去除下面的横线

c#教程之事件处理函数的参数

有没有修改过android 4.22 NavigationBar的黑色背景为半透颜色

如何区分各种NavigationController?

设置主题为经典后屏幕就变成黑色,如何恢复桌面

CMDeviceMotion 标题为 -1.0