如何更改UITabBar选择颜色

时间:2009-04-26 12:09:21

标签: ios iphone objective-c cocoa-touch uitabbar

我需要将UITabBar的选择颜色从默认蓝色更改为红色。我们怎么做。

13 个答案:

答案 0 :(得分:55)

2017年9月更新 我写这个答案已经两年了,因为它经常收到upvotes,我应该说这可能是这个问题最糟糕的答案,它容易出错,因为iOS更新,很难调试等等可能会破坏。所以请不要做我写的东西,并应用更好的解决方案,如子类化UITabBar或UITabBarController。谢谢。

您可以通过为UITabBar设置“tintColor”属性(键路径)来完成此操作。

  1. 在文档大纲中选择UITabBar。 (带黄色图标的控制器。)
  2. 在“工具”区域中选择“身份检查器”。
  3. 单击“用户定义的运行时属性”中的+。
  4. 添加“颜色”类型的“tintColor”键路径和您想要的颜色。
  5. 这应该这样做。您可以根据下面的屏幕截图进行检查。

    enter image description here

    更多相关信息: 在UITabBar的Identity Inspector中有一个“Tint”属性,我相信它会做同样的事情,但显然,它什么也没做。它的默认值是选择UITabBarItem时的确切默认填充颜色,因此我的猜测是它将在稳定版本Xcode 7中修复。手指交叉。

答案 1 :(得分:19)

在IOS5中,UITabBar具有selectedImageTintColor属性,可以满足您的需求。

答案 2 :(得分:15)

在iOS 7中,它只是tintColor。实现此目的的一种方法是子类UITabBarViewController,在storyboard中设置自定义类,并在子类tabBarVC的viewDidLoad方法中添加:

[[self tabBar] setTintColor:[UIColor redColor]];

答案 3 :(得分:11)

非常容易

创建 UITabBarController 的自定义类,并在-(void)viewDidLoad方法中添加以下行:

[[self tabBar] setSelectedImageTintColor:[UIColor greenColor]]; 

答案 4 :(得分:6)

因为在iOS 7中不推荐使用UITextAttributeTextColor,所以你应该使用:

[UITabBarItem.appearance setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor greenColor]} forState:UIControlStateNormal];    
[UITabBarItem.appearance setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor purpleColor]} forState:UIControlStateSelected];

答案 5 :(得分:5)

只需在Interface Builder中为TabBar更改以下属性

显然,在我的情况下是白色。

答案 6 :(得分:5)

enter image description here

要达到上述结果,请执行以下步骤。

第1步:Assets.xcassets中添加您想要的图片,并确保他们Render AsDefault

enter image description here

第2步:选择UITabBar对象并设置Image Tint颜色,此颜色将被选中标签颜色

enter image description here

第3步:选择UITabBar对象并添加关键路径unselectedItemTintColor类型:{{1 用户定义的运行时属性中的<}>,Color

enter image description here

全部完成。

答案 7 :(得分:4)

SDK不会让这很容易,但技术上可能。 Apple显然认为这是他们对外观和感觉一致的愿景的一部分。

UITabBar是UIView的子类。您始终可以继承并实现自己的-drawRect:

这不是一项微不足道的任务,但是,你必须从头开始重新实现这个类,否则你会冒一些奇怪的副作用。

答案 8 :(得分:3)

我一直在寻找一种方法来设置UITabBarItem的选定文本颜色,并使用UIAppearance协议找到了一种简单的死方法。

[UITabBarItem.appearance setTitleTextAttributes:@{
        UITextAttributeTextColor : [UIColor greenColor] } forState:UIControlStateNormal];

[UITabBarItem.appearance setTitleTextAttributes:@{
        UITextAttributeTextColor : [UIColor purpleColor] }     forState:UIControlStateSelected];

请原谅那些可怕的颜色!

答案 9 :(得分:2)

从iOS 8开始,它很简单:

UITabBar.appearance().tintColor = UIColor.redColor()

答案 10 :(得分:2)

以编程方式快速5

在Swift 5中非常简单。

在您的TabBarController中写下:

tintColor = UIColor.red  

就这样

答案 11 :(得分:1)

iOS 5.0修复此问题,但解决方案是在NDA下。在您的文档中查找UITabBar,以便轻松地执行您想要执行的操作。

答案 12 :(得分:0)

我找到了最简单的解决方案 -

  1. 在选项卡栏控制器中选择标签栏

  2. 设置图像色调

  3. 设置色调

  4. 供参考,请参阅附图。

    enter image description here