如何改变导航栏标题的正面颜色

时间:2012-01-06 09:47:45

标签: iphone objective-c ios uinavigationbar uicolor

我在我的应用程序中使用导航控制器,想要更改navigationBar的标题颜色。

我正在使用以下代码

NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor grayColor],UITextAttributeTextColor,nil];
    [self.navController.navigationBar setTitleTextAttributes:dic];

我使用ARC xcode 4.2还有一件事,这段代码只放在appdelegate上

它在ios 4+中运行良好 但不能在以下版本上工作。

请通过appdelegate上的单个代码帮助我完成此操作

5 个答案:

答案 0 :(得分:17)

我只是在寻找相同的东西,并使用iOS 5找到了Alex R. R.的简单解决方案:

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

[[UINavigationBar appearance] setTitleTextAttributes:navbarTitleTextAttributes];

参考: iPhone Navigation Bar Title text color

答案 1 :(得分:9)

您可以在viewcontroller中重新创建titleView:

UILabel * titleView = [[UILabel alloc] initWithFrame:CGRectZero];
titleView.backgroundColor = [UIColor clearColor];
titleView.font = [UIFont boldSystemFontOfSize:20.0];
titleView.shadowColor = [UIColor colorWithWhite:1.0 alpha:1.0];
titleView.shadowOffset = CGSizeMake(0.0f, 1.0f);
titleView.textColor = [UIColor redColor]; // Your color here
self.navigationItem.titleView = titleView;
[titleView sizeToFit];
[titleView release];

其他参数是原始titleView中使用的参数。

**

请查看下面的Max Strater的答案以获得更新的解决方案。

**

答案 2 :(得分:6)

在iOS 5之后,只需执行此操作:

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

答案 3 :(得分:4)

在iOS 7中,只需使用:

self.navController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName : [UIColor whiteColor]};

使用您想要的任何文字颜色更改[UIColor whiteColor]

答案 4 :(得分:2)

在iOS 7中,您可以通过以下方式更改导航栏标题/文字的颜色:

UIColor *red = [UIColor colorWithRed:254.0f/255.0f green:0.0f/255.0f blue:0.0f/255.0f alpha:1.0];

NSMutableDictionary *navBarTextAttributes = [NSMutableDictionary dictionaryWithCapacity:1];

[navBarTextAttributes setObject:red forKey:NSForegroundColorAttributeName ];

self.navigationController.navigationBar.titleTextAttributes = navBarTextAttributes;