我需要将UITabBar的选择颜色从默认蓝色更改为红色。我们如何做到这一点?
我需要将UITabBar的选择颜色从默认蓝色更改为红色。我们如何做到这一点?
更新于2017年9月: 我写下这篇答案已经两年了,由于它经常被点赞,所以我应该说这可能是对这个问题最糟糕的答案,它容易出错,可能因为iOS更新而崩溃,难以调试等等,所以请不要按照我写的方法去做,并采用更好的解决方案,如子类化UITabBar或UITabBarController。谢谢。
您可以通过设置UITabBar的"tintColor"属性(关键路径)来实现此操作。
这应该就可以了。您可以根据下面的截图进行检查。
更多信息: 在UITabBar的Identity Inspector中有一个“Tint”属性,我认为它会做完全相同的事情,但显然它什么也没做。它的默认值是当选择UITabBarItem时的默认填充颜色,所以我猜想它会在稳定版本的Xcode 7中得到修复。抱着好心态。
iOS 7中只需使用tintColor即可。实现该功能的一种方式是,通过子类化UITabBarViewController,在storyboard中设置自定义类,并在子类化的tabBarVC的viewDidLoad
方法中添加以下内容:
[[self tabBar] setTintColor:[UIColor redColor]];
unselectedItemTintColor
。 - TheEye这非常容易
创建一个自定义的 UITabBarController 类,并在 -(void)viewDidLoad
方法中添加以下代码:
[[self tabBar] setSelectedImageTintColor:[UIColor greenColor]];
iOS 7中UITextAttributeTextColor已经被废弃,你应该使用:
[UITabBarItem.appearance setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor greenColor]} forState:UIControlStateNormal];
[UITabBarItem.appearance setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor purpleColor]} forState:UIControlStateSelected];
UITabBar.appearance().tintColor = UIColor.redColor()
SDK并不容易做到这一点,但在技术上是可能的。显然,苹果认为这是他们实现一致外观和感觉视觉效果的一部分。
UITabBar是UIView的子类。您可以始终创建自己的子类并实现-drawRect:
方法:
然而,这并不是一个简单的任务。您必须从头开始重新实现该类,否则会出现一些奇怪的副作用。
在Swift 5中非常容易实现。
在你的TabBarController
中编写以下代码:
tintColor = UIColor.red
就是这样