How to change UITabBar Selection color

2019-01-22 01:56发布

I need to change the selection color of UITabBar from default blue to red. How do we do this.

12条回答
Evening l夕情丶
2楼-- · 2019-01-22 02:15

Starting from iOS 8 it's as simple as:

UITabBar.appearance().tintColor = UIColor.redColor()
查看更多
甜甜的少女心
3楼-- · 2019-01-22 02:16

I've been searching for a way to set the selected text color of a UITabBarItem and have found a dead simple method, using the UIAppearance protocol.

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

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

Please excuse the awful colors!

查看更多
【Aperson】
4楼-- · 2019-01-22 02:19

Update September 2017: It's been two years since I've written this answer and since it's receiving upvotes regularly, I should say this is probably the worst possible answer to this question, it's error prone, likely to break because of iOS updates, hard to debug, etc., so please don't do the things I've written and apply better solutions such as subclassing UITabBar or UITabBarController. Thanks.

You can do this by setting a "tintColor" attribute (Key Path) for you UITabBar.

  1. Select the UITabBar in the document outline. (NOT the Controller with the yellow icon.)
  2. Select Identity Inspector in the Utilities area.
  3. Click the + in "User Defined Runtime Attributes."
  4. Add a "tintColor" Key Path of type "Color" and the color you want.

This should do it. You can check it against the screenshot below.

enter image description here

More on this: There's a "Tint" attribute in Identity Inspector of UITabBar which I believed would do the exact same thing but apparently, it does nothing. It's default value is the exact default fill color when a UITabBarItem is selected, so my guess is it would be fixed in the stable release Xcode 7. Fingers crossed.

查看更多
趁早两清
5楼-- · 2019-01-22 02:28

In IOS5, UITabBar has a selectedImageTintColor property which does what you need.

查看更多
啃猪蹄的小仙女
6楼-- · 2019-01-22 02:29

enter image description here

To achieve above result perform following steps.

Step 1: Add your desired images in Assets.xcassets, and make sure they Render As: Default

enter image description here

Step 2: Select your UITabBar object and set Image Tint color, this color will be selected tab color

enter image description here

Step 3: Select UITabBar object and add Key Path: unselectedItemTintColor, Type: Color, Value: Choose color for unselected item in User Defined Runtime Attributes.

enter image description here

All done.

查看更多
混吃等死
7楼-- · 2019-01-22 02:29

The SDK does not make this easy, but it is technically possible. Apple apparently believes this to be part of their vision of a consistent look and feel.

UITabBar is a subclass of UIView. You can always subclass and implement your own -drawRect:

This is not a trivial task, however, you have to essentially re-implement the class from scratch or you risk some weird side-effects.

查看更多
登录 后发表回答