使用全局 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
改变交互对象的颜色(如UIBarButtonItem
s)
【讨论】:
但我的导航栏应该保持蓝色,而不是白色。 是的。这就是这段代码所允许的。 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 着色器添加颜色效果 )
在不使用 Tint 的情况下更改 NavigationBar 和系统颜色
IOS 7.1 中的 UISegmentedControl Buggy Tint 颜色