在所选标签栏项目上设置文本颜色

时间:2010-12-04 06:22:40

标签: iphone uitabbar

我已经创建了一个标签栏应用程序。我有四个标签;在选定的选项卡上,我需要为选项卡标题设置红色。我怎么能这样做?

提前致谢。

7 个答案:

答案 0 :(得分:24)

使用UIAppearance协议(iOS5 +)现在可以实现,实际上非常简单。

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

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

请原谅那些可怕的颜色!

答案 1 :(得分:2)

只是为了清理一下......

如果您想更改所有标签栏项目的外观,请使用:

目标C

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

夫特

UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.someColor()], forState: .Selected)

然而,如果您只想设置单个项目的外观,请执行以下操作:

目标C

[self.tabBarItem setTitleTextAttributes:@{UITextAttributeTextColor :[UIColor someColor]} forState:UIControlStateSelected];

夫特

tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.someColor()], forState: .Selected)

注意tabBarItemUIViewController上的属性。这意味着虽然每个UIViewController都有此属性,但它可能不是您正在寻找的tabBarItem。当您的视图控制器包含在UINavigationController中时,通常会出现这种情况。在这种情况下,访问导航控制器上的tabBarItem而不是其根(或其他)视图控制器中的{{1}}。

答案 2 :(得分:1)

这最终对我有用:

1)所选文字颜色

[[UIView appearance] setTintColor:someColor];

2)未选择的文字(也改变图像颜色)

[[UITabBar appearance] setTintColor:anotherColor];

答案 3 :(得分:1)

这是快速版本: -

    for item in self.mainTabBar.items! {

    let unselectedItem: NSDictionary = [NSForegroundColorAttributeName: UIColor.whiteColor()]
    let selectedItem: NSDictionary = [NSForegroundColorAttributeName: UIColor.whiteColor()]
    item.setTitleTextAttributes(unselectedItem as? [String : AnyObject], forState: .Normal)
    item.setTitleTextAttributes(selectedItem as? [String : AnyObject], forState: .Selected)

    }

答案 4 :(得分:1)

任何正在寻找Swift 4解决方案的人......

UITabBarItem.appearance().setTitleTextAttributes([NSAttributedStringKey.foregroundColor: .red], for: .selected)

答案 5 :(得分:0)

如果我正确理解您的问题,您需要自定义UITabBarItem上文字的颜色。不幸的是,它真的不那么灵活。如果你打算这样做(除非你在专业人士的帮助下仔细考虑过这个设计,我建议反对!),你必须做一些非常可怕的事情才能让它发挥作用。

我建议迭代UITabBar的子视图(根据需要多个级别),并查找UILabel个对象。如果你找到一些,你可以改变它们的颜色。如果不这样做,那意味着它的实现方式不同(可能在某处的-drawRect:方法中);如果情况确实如此,你真的应该放弃。

祝你好运做任何事。

答案 6 :(得分:-1)

这可以通过-drawRect:实现,但通过这样做,您的应用被App Store拒绝的可能性大大增加