iPhone 导航栏标题文本颜色

Posted

技术标签:

【中文标题】iPhone 导航栏标题文本颜色【英文标题】:iPhone Navigation Bar Title text color 【发布时间】:2010-10-10 14:36:13 【问题描述】:

ios 导航栏的标题颜色似乎默认为白色。有没有办法把它改成不同的颜色?

我知道navigationItem.titleView 使用图像的方法。由于我的设计能力有限,无法获得标准的光泽,我更喜欢更改文本颜色。

任何见解将不胜感激。

【问题讨论】:

我刚刚发布了一段代码,基于 Steven Fisher 的回答,它简化了向导航栏添加自定义颜色标题的过程。它还支持更改标题。寻找它!它不会让你失望。 Erik:我已经把你的答案写进我的笔记里了。我只是用你的代码更新我的答案,但我不想接受你的投票。聪明的解决方案,顺便说一句。 对于 IOS 13 ***.com/a/61141195/6108739 【参考方案1】:

这是缺少的东西之一。最好的办法是创建自己的自定义导航栏,添加一个文本框,然后以这种方式操纵颜色。

【讨论】:

我按照你的想法 :) 我应该重写哪个方法来开始播放标题?对不起,我真的是一个 n00b :(【参考方案2】:

现代方法

对于整个导航控制器的现代方式……在加载导航控制器的根视图时执行一次。

[self.navigationController.navigationBar setTitleTextAttributes:
   @NSForegroundColorAttributeName:[UIColor yellowColor]];

但是,这似乎对后续视图没有影响。

经典方法

每个视图控制器的旧方法(这些常量适用于 iOS 6,但如果想要在 iOS 7 外观上按视图控制器执行此操作,您将需要相同的方法但使用不同的常量):

您需要使用UILabel 作为titleViewnavigationItem

标签应该:

具有清晰的背景颜色 (label.backgroundColor = [UIColor clearColor])。 使用粗体 20pt 系统字体 (label.font = [UIFont boldSystemFontOfSize: 20.0f])。 具有 50% alpha 的黑色阴影 (label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5])。 您还需要将文本对齐方式设置为居中(label.textAlignment = NSTextAlignmentCenterUITextAlignmentCenter 用于旧版 SDK)。

将标签文本颜色设置为您想要的任何自定义颜色。您确实需要一种不会导致文本混入阴影的颜色,这样会难以阅读。

我通过反复试验解决了这个问题,但我提出的价值观最终过于简单,以至于它们不是 Apple 所选择的。 :)

如果您想验证这一点,请将此代码放入 initWithNibName:bundle: 中的 PageThreeViewController.m 中的 Apple's NavBar sample。这将用黄色标签替换文本。这应该和Apple的代码产生的原件没有什么区别,除了颜色。

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self)
    
        // this will appear as the title in the navigation bar
        UILabel *label = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease];
        label.backgroundColor = [UIColor clearColor];
        label.font = [UIFont boldSystemFontOfSize:20.0];
        label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
        label.textAlignment = NSTextAlignmentCenter;
                           // ^-Use UITextAlignmentCenter for older SDKs.
        label.textColor = [UIColor yellowColor]; // change this color
        self.navigationItem.titleView = label;
        label.text = NSLocalizedString(@"PageThreeTitle", @"");
        [label sizeToFit];
    

    return self;

编辑:另外,请阅读下面 Erik B 的回答。我的代码显示了效果,但他的代码提供了一种更简单的方法来将其放到现有视图控制器上。

【讨论】:

如果您使用sizeWithFont: 将标签框设置为其文本大小,它将神奇地采用标准标签的自动对齐行为。 但是如果你使用sizeToFit,你会失去自动截断。 注意:这是设置自定义标题的旧方法,我建议阅读 Erik B 的答案。 确认 sizeToFit 有效,因此更新了答案。此外,添加注释以阅读 Erik B 的答案。 label.textAlignment = UITextAlignmentCenter 自 iOS6.0 起已被弃用,请改用 NSTextAlignmentCenter【参考方案3】:

如果您尝试更改页面上的颜色,tewha 的解决方案效果很好,但我希望能够更改每个页面上的颜色。我做了一些小的修改,使其适用于UINavigationController

上的所有页面

NavigationDelegate.h

//This will change the color of the navigation bar
#import <Foundation/Foundation.h>
@interface NavigationDelegate : NSObject<UINavigationControllerDelegate> 

@end

NavigationDelegate.m

#import "NavigationDelegate.h"
@implementation NavigationDelegate

- (void)navigationController:(UINavigationController *)navigationController 
      willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
    CGRect frame = CGRectMake(0, 0, 200, 44);//TODO: Can we get the size of the text?
    UILabel* label = [[[UILabel alloc] initWithFrame:frame] autorelease];
    label.backgroundColor = [UIColor clearColor];
    label.font = [UIFont boldSystemFontOfSize:20.0];
    label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
    label.textAlignment = UITextAlignmentCenter;
    label.textColor = [UIColor yellowColor];
    //The two lines below are the only ones that have changed
    label.text=viewController.title;
    viewController.navigationItem.titleView = label;

@end

【讨论】:

【参考方案4】:

这是我基于 Stevens 的解决方案

唯一真正的区别是如果根据文本长度调整位置,我会进行一些处理,似乎类似于苹果的做法

UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(([self.title length] < 10 ? UITextAlignmentCenter : UITextAlignmentLeft), 0, 480,44)];
titleLabel.backgroundColor = [UIColor clearColor];
titleLabel.font = [UIFont boldSystemFontOfSize: 20.0f];
titleLabel.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
titleLabel.textAlignment = ([self.title length] < 10 ? UITextAlignmentCenter : UITextAlignmentLeft);
titleLabel.textColor = [UIColor redColor];
titleLabel.text = self.title;
self.navigationItem.titleView = titleLabel;
[titleLabel release];

您可能需要根据您的字体大小调整 10 的值

【讨论】:

【参考方案5】:

像这样使用方向支持

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,40)];
[view setBackgroundColor:[UIColor clearColor]];
[view setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight ];

UILabel *nameLabel = [[UILabel alloc] init];
[nameLabel setFrame:CGRectMake(0, 0, 320, 40)];
[nameLabel setBackgroundColor:[UIColor clearColor]];
[nameLabel setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin |UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin];
[nameLabel setTextColor:[UIColor whiteColor]];
[nameLabel setFont:[UIFont boldSystemFontOfSize:17]];
[nameLabel setText:titleString];
[nameLabel setTextAlignment:UITextAlignmentCenter];
[view addSubview:nameLabel];
[nameLabel release];
self.navigationItem.titleView = view;
[view release];

【讨论】:

【参考方案6】:

我遇到了导航按钮将文本从中心抛出的问题(当您只有一个按钮时)。为了解决这个问题,我刚刚改变了我的帧大小:

CGRect frame = CGRectMake(0, 0, [self.title sizeWithFont:[UIFont boldSystemFontOfSize:20.0]].width, 44);

【讨论】:

【参考方案7】:

你应该调用 [label sizeToFit];当其他按钮占据导航栏时,标签在标题视图中自动重新定位时,设置文本以防止奇怪的偏移后。

【讨论】:

【参考方案8】:

在遇到与在导航栏中插入按钮时标签移动的相同问题(与其他问题一样)之后(在我的情况下,我有一个微调器,在加载日期时我用按钮替换),上述解决方案没有不适合我,所以这是有效的,并且始终将标签保持在同一个地方:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)

    // this will appear as the title in the navigation bar
    //CGRect frame = CGRectMake(0, 0, [self.title sizeWithFont:[UIFont boldSystemFontOfSize:20.0]].width, 44);
   CGRect frame = CGRectMake(0, 0, 180, 44);
    UILabel *label = [[[UILabel alloc] initWithFrame:frame] autorelease];



    label.backgroundColor = [UIColor clearColor];
    label.font = [UIFont boldSystemFontOfSize:20.0];
    label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
    label.textAlignment = UITextAlignmentCenter;
    label.textColor = [UIColor yellowColor];
    self.navigationItem.titleView = label;
    label.text = NSLocalizedString(@"Latest Questions", @"");
    [label sizeToFit];


return self;

【讨论】:

【参考方案9】:

根据 Steven Fisher 的回答,我编写了这段代码:

- (void)setTitle:(NSString *)title

    [super setTitle:title];
    UILabel *titleView = (UILabel *)self.navigationItem.titleView;
    if (!titleView) 
        titleView = [[UILabel alloc] initWithFrame:CGRectZero];
        titleView.backgroundColor = [UIColor clearColor];
        titleView.font = [UIFont boldSystemFontOfSize:20.0];
        titleView.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];

        titleView.textColor = [UIColor yellowColor]; // Change to desired color

        self.navigationItem.titleView = titleView;
        [titleView release];
    
    titleView.text = title;
    [titleView sizeToFit];

此代码的优点是,除了正确处理框架之外,如果您更改控制器的标题,自定义标题视图也将得到更新。无需手动更新。

另一个很大的优势是它使启用自定义标题颜色变得非常简单。您需要做的就是将此方法添加到控制器中。

【讨论】:

我同意这个绝对是最好的解决方案。不需要使用 sizeWithFont,我喜欢重写 setTitle 方法的想法。 @Sr.Richie 您不应该将代码放在自定义导航控制器中。您应该将它放在需要更改标题颜色的所有视图控制器中。您可能甚至不需要自定义导航控制器。 对我不起作用。我认为是因为我使用了 [UINavigationBar 外观] 方法..(因为标签 titleView 始终为零而不起作用) 如果您使用的是 iOS5 或更高版本,您应该阅读下面的减号答案。有一个单线可以正常工作并保留在预订中。 我们需要添加 self.title=@"our string";在 viewDidLoad.then 只有上面的代码有效。【参考方案10】:

我自定义了navigationBar的背景图片和左键项,灰色标题不适合背景。然后我使用:

[self.navigationBar setTintColor:[UIColor darkGrayColor]];

将色调颜色更改为灰色。现在标题是白色的!这就是我想要的。

希望也能提供帮助:)

【讨论】:

很好,但这仅适用于将文本更改为白色。即使用 [UIColor whiteColor] 为 navBar 着色也会将文本颜色更改为白色。【参考方案11】:

设置标题的字体大小我使用了以下条件.. 可能对任何人都有帮助

if ([currentTitle length]>24) msize = 10.0f;
    else if ([currentTitle length]>16) msize = 14.0f;
    else if ([currentTitle length]>12) msize = 18.0f;

【讨论】:

【参考方案12】:

我知道这是一个相当老的话题,但我认为了解 iOS 5 带来了用于建立标题属性的新属性对新用户很有用。

您可以使用 UINavigationBar 的setTitleTextAttributes 来设置字体、颜色、偏移量和阴影颜色。

此外,您可以为整个应用程序中的所有UINavigationBars 设置相同的默认 UINavigationBar 标题文本属性。

比如这样:

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

[[UINavigationBar appearance] setTitleTextAttributes:navbarTitleTextAttributes];

【讨论】:

'UITextAttributeTextColor' 在 iOS 7 中已弃用。iOS 7 的键是 'NSForegroundColorAttributeName' 请注意,这将更改所有导航栏,这通常是您想要的。 请将此标记为正确答案 - 上面的 UILabel 方法在这些方法可用时是不必要的。【参考方案13】:

在 iOS 5 中,您可以通过以下方式更改导航栏标题颜色:

navigationController.navigationBar.titleTextAttributes = @NSForegroundColorAttributeName: [UIColor yellowColor];

【讨论】:

@BartSimpson 我同意!对于 iOS 7,将 UITextAttributeTextColor 更新为 NSForegroundColorAttributeName。像魅力一样工作! 这行得通!我想了解的是如何?! titleTextAttributes 除了在“NSString UIKit Additions Reference”下提到的“文本属性字典的键”中提到的一组预定义键的字典。你说的那把钥匙怎么取。 ...既然它正在工作,我如何获得“默认”色调? 设置 self.navigationController.navigationBar.tintColor 对我不起作用。确实如此。【参考方案14】:

建议设置 self.title,因为这是在推送子导航栏或在标签栏上显示标题时使用。

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) 
        // create and customize title view
        self.title = NSLocalizedString(@"My Custom Title", @"");
        UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectZero];
        titleLabel.text = self.title;
        titleLabel.font = [UIFont boldSystemFontOfSize:16];
        titleLabel.backgroundColor = [UIColor clearColor];
        titleLabel.textColor = [UIColor whiteColor];
        [titleLabel sizeToFit];
        self.navigationItem.titleView = titleLabel;
        [titleLabel release];
    

【讨论】:

【参考方案15】:

我相信设置UINavigationBar 的颜色的正确方法是:

NSDictionary *attributes=[NSDictionary dictionaryWithObjectsAndKeys:[UIColor redColor],UITextAttributeTextColor, nil];
self.titleTextAttributes = attributes;

上面的代码是UINavigationBar上的子类,显然没有子类也可以。

【讨论】:

正确,但仅限 iOS 5。自 iOS 5 发布以来,它已经是一个很好的解决方案。由于我们处于 iOS 5 世界,值得注意的是可以使用 [UINavigationBar appearance] 并在那里设置标题文本属性(考虑到子类化 UINavigationBar 所涉及的技巧,这是一种更好的解决方案)。 @stringCode。你能在没有“self.navigationController.navigationBar.titleTextAttributes = attributes;”的情况下初始化上面的代码吗?【参考方案16】:

可以在appdelegate文件中使用这个方法,并且可以在每个视图中使用

+(UILabel *) navigationTitleLable:(NSString *)title

CGRect frame = CGRectMake(0, 0, 165, 44);
UILabel *label = [[[UILabel alloc] initWithFrame:frame] autorelease];
label.backgroundColor = [UIColor clearColor];
label.font = NAVIGATION_TITLE_LABLE_SIZE;
label.shadowColor = [UIColor whiteColor];
label.numberOfLines = 2;
label.lineBreakMode = UILineBreakModeTailTruncation;    
label.textAlignment = UITextAlignmentCenter;
[label setShadowOffset:CGSizeMake(0,1)]; 
label.textColor = [UIColor colorWithRed:51/255.0 green:51/255.0 blue:51/255.0 alpha:1.0];

//label.text = NSLocalizedString(title, @"");

return label;

【讨论】:

【参考方案17】:

从 iOS 5 开始,我们必须使用 titleTextAttribute 字典(UInavigation 控制器类参考中的预定义字典)设置导航栏的标题文本颜色和字体。

 [[UINavigationBar appearance] setTitleTextAttributes:
 [NSDictionary dictionaryWithObjectsAndKeys:
  [UIColor blackColor],UITextAttributeTextColor, 
[UIFont fontWithName:@"ArialMT" size:16.0], UITextAttributeFont,nil]];

【讨论】:

【参考方案18】:

titleTextAttributes 显示栏标题文本的属性。

@property(nonatomic, 复制) NSDictionary *titleTextAttributes 讨论 您可以使用 NSString UIKit Additions Reference 中描述的文本属性键在文本属性字典中为标题指定字体、文本颜色、文本阴影颜色和文本阴影偏移量。

可用性 在 iOS 5.0 及更高版本中可用。 宣布于 UINavigationBar.h

【讨论】:

【参考方案19】:

为了使 Erik B 的出色解决方案在您应用程序的不同 UIVIewCOntrollers 中更有用,我建议为 UIViewController 添加一个类别并在其中声明他的 setTitle:title 方法。像这样,您将在所有视图控制器上更改标题颜色,而无需重复。

需要注意的一点是,您不需要 [super setTItle:tilte];在 Erik 的代码中,您需要在视图控制器中显式调用 self.title = @"my new title" 才能调用此方法

@implementation UIViewController (CustomeTitleColor)

- (void)setTitle:(NSString *)title

    UILabel *titleView = (UILabel *)self.navigationItem.titleView;
    if (!titleView) 
        titleView = [[UILabel alloc] initWithFrame:CGRectZero];
        titleView.backgroundColor = [UIColor clearColor];
        titleView.font = [UIFont boldSystemFontOfSize:20.0];
        titleView.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];

        titleView.textColor = [UIColor blueColor]; // Change to desired color

        self.navigationItem.titleView = titleView;
        [titleView release];
    
    titleView.text = title;
    [titleView sizeToFit];

@结束

【讨论】:

【参考方案20】:

上面的大部分建议现在都已弃用,供 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 以了解可以设置的各种文本属性。

【讨论】:

【参考方案21】:

使用新的 iOS 7 文本属性和现代目标 c 来更新 Alex R.R. 的帖子以减少噪音:

NSShadow *titleShadow = [[NSShadow alloc] init];
titleShadow.shadowColor = [UIColor blackColor];
titleShadow.shadowOffset = CGSizeMake(-1, 0);
NSDictionary *navbarTitleTextAttributes = @NSForegroundColorAttributeName:[UIColor whiteColor],
                                            NSShadowAttributeName:titleShadow;

[[UINavigationBar appearance] setTitleTextAttributes:navbarTitleTextAttributes];

【讨论】:

【参考方案22】:

又短又甜。

[[[self navigationController] navigationBar] setTitleTextAttributes:@NSForegroundColorAttributeName: [UIColor redColor]];

【讨论】:

【参考方案23】:

在 IOS 7 和 8 中,您可以将标题的颜色更改为绿色

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

【讨论】:

斯威夫特:self.navigationController!.navigationBar.titleTextAttributes = NSDictionary(object: UIColor.whiteColor(), forKey: NSForegroundColorAttributeName) as [NSObject : AnyObject] @ByronCoetsee 更新到 Swift 2 后出现以下错误:无法将“[NSObject : AnyObject]”类型的值分配给“[String : AnyObject]”类型的值? 在 swift 2.0 中容易很多 self.navigationController!.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]【参考方案24】:

在任何视图控制器 viewDidLoad 或 viewWillAppear 方法中使用以下代码。

- (void)viewDidLoad

    [super viewDidLoad];

    //I am using UIColor yellowColor for an example but you can use whatever color you like   
    self.navigationController.navigationBar.titleTextAttributes = @NSForegroundColorAttributeName: [UIColor yellowColor];

    //change the title here to whatever you like
    self.title = @"Home";
    // Do any additional setup after loading the view.

【讨论】:

【参考方案25】:
self.navigationItem.title=@"Extras";
[self.navigationController.navigationBar setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"HelveticaNeue" size:21], NSFontAttributeName,[UIColor whiteColor],UITextAttributeTextColor,nil]];

【讨论】:

【参考方案26】:

这是一个相当古老的线程,但我想为 iOS 7 及更高版本的导航栏标题的颜色、大小和垂直位置提供答案

颜色和尺寸

 NSDictionary *titleAttributes =@
                                NSFontAttributeName :[UIFont fontWithName:@"Helvetica-Bold" size:14.0],
                                NSForegroundColorAttributeName : [UIColor whiteColor]
                                ;

垂直位置

[[UINavigationBar appearance] setTitleVerticalPositionAdjustment:-10.0 forBarMetrics:UIBarMetricsDefault];

设置标题并分配属性字典

[[self navigationItem] setTitle:@"CLUBHOUSE"];
self.navigationController.navigationBar.titleTextAttributes = titleAttributes;

【讨论】:

【参考方案27】:

为了使问题保持​​最新,我将添加 Alex R. R. 解决方案,但在 Swift 中:

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

哪些结果:

【讨论】:

嗯,也许它不适用于 Swift 2.0。让我仔细检查一下。不过不需要侵略。 抱歉,Michal,我以为那是个玩笑!不像是侵略性的东西!对我有用的更像是这样: self.navigationController!.navigationBar.titleTextAttributes = NSDictionary(object: UIColor.whiteColor(), forKey: NSForegroundColorAttributeName) as [NSObject : AnyObject] 添加以下行: UINavigationBar.appearance().barStyle = UIBarStyle.Black 在此行之前: UINavigationBar.appearance().tintColor = UIColor.whiteColor() 使 tintColor 工作! 在 Swift 4.0 中:self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor : UIColor.white]【参考方案28】:

Swift 版本

我发现你们大多数人都给出了Objective_C版本的答案

我想为任何需要它的人使用 Swift 来实现这个功能。

在 ViewDidload 中

1.使NavigationBar背景变成彩色(例如:BLUE)

self.navigationController?.navigationBar.barTintColor = UIColor.blueColor()

2.使NavigationBar背景变成Image(例如:ABC.png)

let barMetrix = UIBarMetrics(rawValue: 0)!

self.navigationController?.navigationBar
      .setBackgroundImage(UIImage(named: "ABC"), forBarMetrics: barMetrix)

3.更改 NavigationBar 标题(例如:[Font:Futura,10] [Color:Red])

navigationController?.navigationBar.titleTextAttributes = [
            NSForegroundColorAttributeName : UIColor.redColor(),
            NSFontAttributeName : UIFont(name: "Futura", size: 10)!
        ]

(提示1:不要忘记UIFont后面的“!”标记)

(hint2: 标题文字有很多属性,command click “NSFontAttributeName”可以输入类并查看keyNames 以及他们需要的对象类型)

希望能帮到你!:D

【讨论】:

【参考方案29】:

方法一,在IB中设置:

方法二,一行代码:

navigationController?.navigationBar.barTintColor = UIColor.blackColor()

【讨论】:

方法 2 不起作用。仅适用于titleTextAttributes【参考方案30】:

我正在为 iOS 9 使用下面的代码,它对我来说工作正常。我还为标题使用了阴影颜色。

self.navigationItem.title = @"MY NAV TITLE";
self.navigationController.navigationBar.barTintColor = [UIColor redColor];
self.navigationController.navigationBar.translucent = NO;
NSShadow *shadow = [[NSShadow alloc] init];
shadow.shadowColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8];
shadow.shadowOffset = CGSizeMake(0, 1);
[self.navigationController.navigationBar setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:
                                                       [UIColor colorWithRed:245.0/255.0 green:245.0/255.0 blue:245.0/255.0 alpha:1.0], NSForegroundColorAttributeName,
                                                       shadow, NSShadowAttributeName,
                                                       [UIFont fontWithName:@"HelveticaNeue-Light" size:21.0], NSFontAttributeName, nil]];

希望对您有所帮助。

谢谢

【讨论】:

只需将navigationBar.barStyle设置为blackStyle,标题就会变成白色。

以上是关于iPhone 导航栏标题文本颜色的主要内容,如果未能解决你的问题,请参考以下文章

着色 iPhone 导航栏时颜色和按钮会改变行为

更改导航栏文本颜色

如何在 iOS 7.1.1 / iPhone 5s 上更改导航栏按钮颜色

具有多种颜色的大型导航栏文本

尝试更改邮件撰写导航栏文本颜色

iOS 7 中 UIActivityViewControllers 的模态状态栏和导航栏文本颜色