38

我需要将 UITabBar 的选择颜色从默认的蓝色更改为红色。我们如何做到这一点。

4

13 回答 13

59

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

您可以通过为您的 UITabBar 设置“tintColor”属性(键路径)来做到这一点。

  1. 在文档大纲中选择 UITabBar。(不是带有黄色图标的控制器。)
  2. 在 Utilities 区域中选择 Identity Inspector。
  3. 单击“用户定义的运行时属性”中的 +。
  4. 添加“颜色”类型的“tintColor”键路径和您想要的颜色。

这应该这样做。您可以对照下面的屏幕截图进行检查。

在此处输入图像描述

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

于 2015-09-03T08:50:21.760 回答
19

在 IOS5 中,UITabBar 有一个selectedImageTintColor属性,可以满足您的需要。

于 2012-01-16T17:26:26.233 回答
15

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

[[self tabBar] setTintColor:[UIColor redColor]];
于 2013-09-25T05:00:38.743 回答
13

在此处输入图像描述

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

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

在此处输入图像描述

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

在此处输入图像描述

第 3 步:选择UITabBar对象并在User Defined Runtime Attributes中添加Key Path : unselectedItemTintColor, Type : Color, Value : 。Choose color for unselected item

在此处输入图像描述

全部完成。

于 2017-10-17T06:05:10.373 回答
11

这非常容易

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

[[self tabBar] setSelectedImageTintColor:[UIColor greenColor]]; 
于 2012-12-03T02:43:48.350 回答
6

因为 UITextAttributeTextColor 在 iOS 7 中已被弃用,您应该使用:

[UITabBarItem.appearance setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor greenColor]} forState:UIControlStateNormal];    
[UITabBarItem.appearance setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor purpleColor]} forState:UIControlStateSelected];
于 2014-03-31T15:50:51.653 回答
5

只需在界面生成器中更改 TabBar 的以下属性

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

于 2016-11-03T09:14:02.097 回答
5

从 iOS 8 开始,它很简单:

UITabBar.appearance().tintColor = UIColor.redColor()
于 2016-02-04T14:35:56.513 回答
4

SDK 并没有使这变得容易,但在技术上是可行的。苹果显然认为这是他们一致外观和感觉愿景的一部分。

UITabBar 是 UIView 的子类。你总是可以继承并实现你自己的-drawRect:

这不是一项简单的任务,但是,您必须从头开始重新实现该类,否则您将面临一些奇怪的副作用。

于 2009-04-26T17:21:45.267 回答
4

Swift 5 以编程方式

在 Swift 5 中这很容易。

在你TabBarController写这个:

tintColor = UIColor.red  

而已

于 2020-07-21T05:54:17.767 回答
3

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

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

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

请原谅可怕的颜色!

于 2013-04-16T09:01:32.497 回答
1

iOS 5.0 修复了这个问题,但解决方案是在保密协议下。在您的文档中查找 UITabBar 以获得一种简单的方法来做您想做的事情。

于 2011-10-05T20:09:33.630 回答
0

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

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

  2. 设置图像色调颜色

  3. 设置色调颜色

有关参考,请参阅附图。

在此处输入图像描述

于 2018-06-11T19:25:24.653 回答