iosobjective-cios7uitabbaruitabbaritem

UITabBar change background color of one UITabBarItem on iOS7


Can I change the background color of a specific UITabBarItem in a UITabBar?

I know how to change all the background of the selected background, using:

[[UITabBar appearance] setBarTintColor:[UIColor redColor]];
[[UITabBar appearance] setTintColor:[UIColor blueColor]];
[[UITabBar appearance] setSelectedImageTintColor:[UIColor yellowColor]];

But can it be done for only one item without subclassing?

Thanks


Solution

  • You can add a subview to the parent tabBar, and set a background color on the subview. You can use the tabBar frame dimensions to calculate the offset and width of your tabBarItem, and then insert the subview underneath.

    Example (in Swift):

    // Add background color to middle tabBarItem
    let itemIndex = 2
    let bgColor = UIColor(red: 0.08, green: 0.726, blue: 0.702, alpha: 1.0)
    
    let itemWidth = tabBar.frame.width / CGFloat(tabBar.items!.count)
    let bgView = UIView(frame: CGRectMake(itemWidth * itemIndex, 0, itemWidth, tabBar.frame.height))
    bgView.backgroundColor = bgColor
    tabBar.insertSubview(bgView, atIndex: 0)