2014-07-10 129 views
7

我已经设置了全局tintColor,并且我可以在界面生成器中看到它,当我选择UITabBar和UITabBarController时,仍然在运行应用程序时,所选UITabBarItem的色调是iOS默认(蓝色),而不是我设置的。我错过了什么?UITabBar tintColor没有改变故事板

P.S. 的UITabBarController推到navigationController,它不是RootViewController的

回答

10

使用此代码在您的appDelegate

[[UITabBar appearance] setSelectedImageTintColor: [UIColor redColor]]; 

didFinishLaunchingWithOptions:方法你想要的颜色替换红色。

+0

很棒!谢谢。 – Dean

+0

我的荣幸@Dean!不推荐使用iOS setSelectedImageTintColor中的 –

+1

,应该使用tintColor代替。Swift版本: UITabBar.appearance()。tintColor = UIColor.red – Jurasic

4

如果你是针对iOS的8则

selectedImageTintColor在iOS 8的使用tintColor

斯威夫特

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

目标C弃用

[[UITabBar appearance] setTintColor: [UIColor redColor]]; 
+0

虽然unselectedItemTintColor工作正常,但我在appDelegate中放置了相同的代码但不工作 – nikhil84

12

Storyboard不直接支持。但是您可以在故事板中设置用户定义的运行时属性

选择标签栏控制器的标签栏。 Select the tab bar of the tab bar controller.

选择身份检查员。 (在这里你可以设置类观点的看法。)

Select the identity inspector

如果你想改变所选项目的着色颜色代替,只是用selectedImageTintColor关键路径来代替。

+0

这是一个很好的解决方案,但我不确定为什么它不适用于iOS 10。由Scott工作的代码解决方案很好 –

+0

由Scott工作的解决方案,但它有另一个问题,它改变了tabbar(tabbar上的所有项目)tintColor不是一个选项卡! –

+0

这是真正的赢家。结合我们从两个答案中得到的结果:将关键路径设置为“selectedImageTintColor”而不是“tintColor”,并且不需要代码。 – winfred

0

在我的应用程序中,我希望每个ViewController在呈现时都具有唯一的TabBarItem颜色。

enter image description here

在iOS系统8中,人工添加在故事板一个tintColor属性的工作得很好,但不再有8.

我通过包括解决了这个问题的iOS下9/Xcode的任何影响在我的每个TabBarController的子ViewControllers中重写每个ViewDidAppear()函数中的代码。

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 
    self.tabBarController?.tabBar.tintColor = UIColor.whateverColor 
    //The rest of your code 
} 

这是在任何ViewController安全,由于?在tabBarController调用之后。如果ViewController未嵌入到TabBarController中,则整个行将被忽略。

通过将此代码放置在每个VC中,您可以轻松地指定每个TabBarItem的颜色。