如何在UITabBarItem

时间:2017-10-20 18:40:37

标签: ios objective-c uikit uitabbar uitabbaritem

我想为未选中状态的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 - 所以在上面的代码段中,文本和图片都显示为蓝色。

我也尝试在创建titleTextAttributes之后直接更改UITabBarItem(而不是使用appearance),但这似乎没有效果。< / p>

如何实现不同的未选择颜色?有可能吗?

1 个答案:

答案 0 :(得分:2)

我在发布后不久就设法解决了这个问题。事实证明,虽然使用unselectedItemTintColor设置UIAppearance会覆盖项目的titleTextAttributes,但如果您直接在标签栏上设置unselectedItemTintColor,一切正常。

所以而不是

[[UITabBar appearance] setUnselectedItemTintColor:[UIColor blueColor]];

只是做

[self.myTabBarInstance setUnselectedItemTintColor:[UIColor blueColor]];