如何在 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 上设置不同的未选择图像和文本颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UITabbaritem 上设置图像?

在其他视图中更改 UItabbaritem 的标题?

tvOS 上 UITabBarItem 的选定和聚焦状态

如何自定义 UITabBarItem 上的标题?

如何使用 Swift 在 iOS 中创建类似于标签栏选择动画的 LinkedIn?

本机 UITabBarItem 上使用的字体设置是啥