如何在 UITabBarItem 上设置不同的未选择图像和文本颜色
Posted
技术标签:
【中文标题】如何在 UITabBarItem 上设置不同的未选择图像和文本颜色【英文标题】:How to set a different unselected image and text color on UITabBarItem 【发布时间】:2017-10-20 18:40:37 【问题描述】:我想为处于未选中状态的UITabBarItem
的标题文本和图像设置不同的颜色。
对于选中的状态,我可以这样完成:
[[UITabBar appearance] setTintColor:[UIColor purpleColor]]; // image color
[[UITabBarItem appearance] setTitleTextAttributes:@ NSForegroundColorAttributeName: [UIColor orangeColor] forState:UIControlStateSelected]; // text color
对于未选中的状态,我正在尝试以下操作:
[[UITabBar appearance] setUnselectedItemTintColor:[UIColor blueColor]]; // image color
[[UITabBarItem appearance] setTitleTextAttributes:@ NSForegroundColorAttributeName: [UIColor redColor] forState:UIControlStateNormal]; // text color
但由于某种原因,unselectedItemTintColor
设置会覆盖我尝试为titleTextAttributes
设置的任何内容——因此在上面的 sn-p 中,文本和图像都会显示为蓝色。
我还尝试在创建 UITabBarItem
后直接更改 titleTextAttributes
(而不是使用 appearance
),但这似乎没有任何效果。
如何实现不同的未选择颜色?有可能吗?
【问题讨论】:
这看起来确实像一个错误。选项可以是 1) 仅使用图像,或 2) 为标签栏项目使用自定义视图,或 3) 自定义标签栏控制器? 【参考方案1】:我在发布后不久就设法解决了这个问题。事实证明,虽然使用UIAppearance
设置unselectedItemTintColor
会覆盖该项目的titleTextAttributes
,但如果您直接在标签栏本身上设置unselectedItemTintColor
,则一切正常。
所以不是
[[UITabBar appearance] setUnselectedItemTintColor:[UIColor blueColor]];
只是做
[self.myTabBarInstance setUnselectedItemTintColor:[UIColor blueColor]];
【讨论】:
以上是关于如何在 UITabBarItem 上设置不同的未选择图像和文本颜色的主要内容,如果未能解决你的问题,请参考以下文章