How can I change the text and icon colors for tabBarItems in iOS 7?

前端 未结 11 902
陌清茗
陌清茗 2020-12-02 07:26

How can I change the text and icon colors for UITabBar and UITabBarItems in iOS 7? The default gray text seems dim and hard to read for unselected tabbar items.

相关标签:
11条回答
  • 2020-12-02 08:09

    Code free way to change text color in tab bar:

    If you are just using iOS 10 then you may change the Image Tint in your Tab Bar

    If you are also supporting iOS 9 and lower, then you must also add tintColor to your user definer runtime attributes in each tab bar item

    if you also wish to change your icon color make sure the correct color image is in your assest folder and change Render as to Original Image

    0 讨论(0)
  • 2020-12-02 08:10
    [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                               [UIColor whiteColor], UITextAttributeTextColor,
                                                               nil] 
    
    0 讨论(0)
  • 2020-12-02 08:11

    There are two things you need to do for this:

    1) If you want to customize the TabBar itself, you need to set the barTintColor for the tabBarController:

        // this will generate a black tab bar
        tabBarController.tabBar.barTintColor = [UIColor blackColor];
    
        // this will give selected icons and text your apps tint color
        tabBarController.tabBar.tintColor = appTintColor;  // appTintColor is a UIColor *
    

    2) Set the tabBarItem text appearance for each state that you want to override:

    [[UITabBarItem appearance] setTitleTextAttributes:@{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Bold" size:10.0f],
                                                        NSForegroundColorAttributeName : appTintColor
                                                        } forState:UIControlStateSelected];
    
    
    // doing this results in an easier to read unselected state then the default iOS 7 one
    [[UITabBarItem appearance] setTitleTextAttributes:@{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Bold" size:10.0f],
                                                        NSForegroundColorAttributeName : [UIColor colorWithRed:.5 green:.5 blue:.5 alpha:1]
                                                        } forState:UIControlStateNormal];
    
    0 讨论(0)
  • 2020-12-02 08:12

    Tested in iOS 8 for permanent text color (selected/unselected) and image colors (selected/unselected) without create two images with different colors foreach tab:

    Text color:

    [[UITabBar appearance] setTintColor: selectedTabColor ];
        [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                           **yourFont**, NSFontAttributeName,
                                                           ** selectedTabColor**, NSForegroundColorAttributeName,
                                                           nil] forState:UIControlStateNormal];
    
        [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                           **yourFont**, NSFontAttributeName,
                                                           **selectedTabColor**, NSForegroundColorAttributeName,
                                                           nil] forState:UIControlStateSelected];
    

    Images color: (assuming that the original images have the color you want display as unselected)

    In a UITabBarController subclass -awakeFromNib :

        for (int i =0; i<self.viewControllers.count; i++)
        {
            UITabBarItem *tab = [self.tabBar.items objectAtIndex:i];
            tab.image = [tab.image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ];
        }
    

    Credits: the whole internet and stack overflow XD

    0 讨论(0)
  • 2020-12-02 08:14

    This worked for me, to tint not active items in the tabbar

    UITabBarItem *item = [self.tabBar.items objectAtIndex:1];
    

    // here you need to use the icon with the color you want, as it will be rendered as it is

    item.image = [[UIImage imageNamed:@"unselected.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    

    // this icon is used for selected tab and it will get tinted as defined in

    self.tabBar.tintColor
    item.selectedImage = [UIImage imageNamed:@"selected.png"];
    
    0 讨论(0)
  • 2020-12-02 08:19

    use self.tabBarController.tabBar.barStyle = UIBarStyleBlack; to make the tab bar black

    0 讨论(0)
提交回复
热议问题