仅为特定子视图控制器设置UINavigationBar的tintColor

时间:2013-12-10 11:53:22

标签: ios uinavigationcontroller uinavigationbar tintcolor

我有一个基本的主要细节应用程序。根据在主列表中选择的项目,我只想在详细信息视图中设置导航栏的tintColor

我在细节控制器的self.navigationController.navigationBar.tintColor = detailTintColor;中设置了这样的色调:viewWillAppear:

但是,这也会将主控制器导航栏的颜色更改为黄色(应保持红色),这在过渡动画期间会显示为闪烁。我假设因为只有一个导航栏实例。

这里有一个截图来说明问题:

  • “i”图标位于主视图控制器的导航栏中,应为红色,而不是黄色

enter image description here

3 个答案:

答案 0 :(得分:2)

当视图消失时,为什么不重置为原始颜色?

-(void)viewWillDisappear:(BOOL)animated {
    self.navigationController.navigationBar.tintColor = yourSavedColor;
    [super viewWillDisappear:animated];
}

答案 1 :(得分:2)

您只需更改故事板中详细信息UINavigationBarUINavigationController的色调颜色:

enter image description here

工作样本:

enter image description here

您可以使用UIAppearance API通过继承UINavigationController获取相同的结果,并将详细信息控制器设置为该自定义类。然后,使用UIAppearance API,设置UINavigationBar色调颜色:

[[UINavigationBar appearanceWhenContainedIn:[DetailNavigationController class], nil] setTintColor:[UIColor redColor]];

答案 2 :(得分:2)

在iOS 8中,我们通过以下方式设置色彩: -

self.navigationController.navigationBar.barTintColor = [UIColor redColor];