使用全局 Tint 颜色作为 UINavigationBars backgroundColor

Posted

技术标签:

【中文标题】使用全局 Tint 颜色作为 UINavigationBars backgroundColor【英文标题】:Using global Tint color as UINavigationBars backgroundColor 【发布时间】:2013-12-02 16:25:00 【问题描述】:

我需要将 UINavigationBars 背景颜色设置为与我的应用程序全局色调颜色相同的值。

这里的问题是现在我导航栏中的所有按钮都与其背景颜色相同。我现在可以将所有 UIBarButtons 文本颜色更改为白色,但这完全无法使用。使用 UIAppearance API 似乎不是更好的方法。将 UIBarButton 项目的文本颜色设置为白色后,我的 UINavigationBar 中的后退按钮的后退箭头仍然使用全局着色颜色。

如果我将全局色调更改为白色,我会失去全局色调给我们带来的所有灵活性(我的文本指示器现在将是白色,不会在白色背景上看到)

我想要什么:

我使用蓝色作为全局色调得到了什么

当使用蓝色作为全局色调并将 uibarbutton 项目的文本颜色设置为白色时,我得到了什么(请参阅后退按钮 - 它也应该是白色的)

解决此问题的推荐方法是什么?

【问题讨论】:

尝试将导航栏色调设置为白色。 【参考方案1】:

我建议你这样做:

UINavigationBar *navigationBar      = [UINavigationBar appearance];
navigationBar.tintColor             = [UIColor whiteColor];

将此代码放在 AppDelegate 中的 didFinishLaunchingWithOptions: 方法中。

澄清一下,因为您显然对此不是很有经验:

barTintColor 是可以更改条形颜色的属性。 tintColor 改变交互对象的颜色(如UIBarButtonItems)

【讨论】:

但我的导航栏应该保持蓝色,而不是白色。 是的。这就是这段代码所允许的。 tintColor 更改按钮,而不是栏。【参考方案2】:
if ([[UINavigationBar class] respondsToSelector:@selector(appearance)]) 
    [[UINavigationBar appearance] setBarTintColor:[UIColor whiteColor]];
    [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];

【讨论】:

【参考方案3】:

尝试在指定的控制器中设置 UINavigationBar setTintColor(例如在 viewDidLoad 中)。

【讨论】:

以上是关于使用全局 Tint 颜色作为 UINavigationBars backgroundColor的主要内容,如果未能解决你的问题,请参考以下文章

Android 安装包优化Tint 着色器 ( 简介 | 布局文件中的 Tint 着色器基本用法 | 代码中使用 Tint 着色器添加颜色效果 )

在 UIImageView 上使用 Tint 颜色

在不使用 Tint 的情况下更改 NavigationBar 和系统颜色

IOS 7.1 中的 UISegmentedControl Buggy Tint 颜色

根据状态更改 UIButton 中 ImageView 的 tint 颜色

Android改变图片背景颜色tint(着色)或 backgroundTint