如何更改压入堆栈的视图控制器的标题颜色?

Posted

技术标签:

【中文标题】如何更改压入堆栈的视图控制器的标题颜色?【英文标题】:How do you change the title color for a view controller pushed onto the stack? 【发布时间】:2016-02-15 23:53:54 【问题描述】:

从一个 UITableView 我正在使用这个代码将另一个带有另一个 UITableView 的视图控制器推送到堆栈上:

// allocate and create instance of categories view controller
TJKCategoriesViewController *categoriesViewController = [[TJKCategoriesViewController alloc] init];

// push it onto the top of the navigation controller's stack
[self.navigationController pushViewController:categoriesViewController animated:YES];

当我在 TJKCategoriesViewContoller 的 viewDidLoad 方法中时,我正在使用以下代码更改标题:

self.title = @"Categories";

这很好用。然而,“类别”标题是黑色的,我希望它是一种不同的颜色。我试过 tintColor 之类的东西,但 self.title 没有这个属性。

有人有什么建议吗?

谢谢, 格伦

【问题讨论】:

How to change Navigation Bar color in ios 7?的可能重复 【参考方案1】:

您可以创建一个 UILabel 并将其设置为 UINavigationItem 的 titleView。请参阅 Apple 文档:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UINavigationItem_Class/#//apple_ref/occ/instp/UINavigationItem/titleView

一些代码:

- (void)setMyTitle:(NSString *)title

    UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.navigationController.view.bounds.size.width - 100, 44)];
    titleLabel.text = title;
    titleLabel.font = [UIFont systemFontOfSize:16];
    titleLabel.textColor = ...
    ...
    self.navigationItem.titleView = titleLabel;

【讨论】:

谢谢,这也有效。我还没有足够的声望点来增加有用的计数器。【参考方案2】:

将此添加到您的 viewDidLoad 方法中:

NSArray *keys = [NSArray arrayWithObjects: NSForegroundColorAttributeName, NSFontAttributeName, nil];
NSArray *objs = [NSArray arrayWithObjects: [UIColor redColor], [UIFont fontWithName:@"HelveticaNeue-Bold" size:20.0f], nil];
self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObjects:objs forKeys:keys];

您可以自定义字体和颜色

【讨论】:

【参考方案3】:

您可以使用 NavigationBar 的 tintColor 属性:

self.navigationController.navigationBar.tintColor = [UIColor blueColor];

如果您想将tintColor 更改为全局,您可以使用 NavigationBar 外观代理。

[[UINavigationBar appearance] setTintColor: [UIColor blueColor]];

【讨论】:

以上是关于如何更改压入堆栈的视图控制器的标题颜色?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 swift 在一个视图控制器中更改状态栏颜色?

从一个视图控制器更改项目中所有视图的背景颜色?

选择单元格以导航另一个视图控制器类时如何更改渐变单元格图像颜色

Swift 3 - 通过开关更改所有视图控制器的背景颜色(暗模式/夜间模式)

如何更改 ViewController 视图后面的颜色/放置东西(swift)?

如何在 iPhone 中更改 UIPickerView 的背景颜色