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

时间:2016-02-15 23:53:55

标签: ios objective-c uitableview uiviewcontroller uinavigationcontroller

从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没有这个属性。

有人有任何建议吗?

谢谢, 格伦

3 个答案:

答案 0 :(得分:2)

您可以创建UILabel并将其设置为UINavigationItem的titleView。请参阅Apple doc: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;
}

答案 1 :(得分:0)

您可以使用NavigationBar的tintColor属性:

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

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

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

答案 2 :(得分:0)

将此添加到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];

您可以自定义字体和颜色