NavigationBar标题是黑色的

时间:2013-06-28 07:08:02

标签: ios iphone cocoa-touch uinavigationcontroller

我在UINavigationBar的应用中使用了UITabBar。 在第一个选项卡上,导航栏标题正确地作为带有默认背景颜色的白色标题,但在第二个选项卡上它不能以相同的方式工作。我没有使用任何代码来更改标题颜色或导航栏的tintColor

第一种观点:
http://img407.imageshack.us/img407/7192/4go.png

第二视图: http://img824.imageshack.us/img824/4493/idtk.png

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

6 个答案:

答案 0 :(得分:26)

通常,您无法更改UINavigationBar标题的默认颜色。如果你想改变UINavigationBar Title的颜色,你需要自定义UINavigationBar。所以为第二个ViewController添加代码以获得更多理解。

修改

搜索后,我发现您可以通过

更改UINavigationBar的标题颜色
self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:UITextAttributeTextColor];

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

答案 1 :(得分:11)

以上大多数建议现已弃用,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以获取可以设置的各种文本属性。

答案 2 :(得分:8)

在AppDelegate中尝试:

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

答案 3 :(得分:7)

这将允许您更改颜色

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

[[UINavigationBar appearance] setTitleTextAttributes:navbarTitleTextAttributes];

答案 4 :(得分:4)

对于iOS7使用此代码,因为UITextAttributeTextColor已被弃用。

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

答案 5 :(得分:1)

此代码更改了所有导航栏的文本,使用此代码可以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]];