Как изменить цвет текста и значков для tabBarItems в iOS 7?

Как изменить цвета текста и значков для UITabBar и UITabBarItems в iOS 7? Серый текст по умолчанию кажется тусклым и трудным для чтения для невыбранных элементов таббара.

10 ответов


для этого вам нужно сделать две вещи:

1) Если вы хотите настроить саму панель табуляции, вам нужно установить barTintColor для 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) Установите внешний вид текста tabBarItem для каждого состояния, которое вы хотите переопределить:

[[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];

Это сработало для меня, чтобы оттенить не активные элементы в таббаре

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

/ / здесь вам нужно использовать значок с нужным цветом, так как он будет отображаться так, как есть

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

// этот значок используется для выбранной вкладки, и он будет тонироваться, как определено в

self.tabBar.tintColor
item.selectedImage = [UIImage imageNamed:@"selected.png"];

ответ Эда идеален, но позвольте мне добавить одну вещь. TabBar по умолчанию полупрозрачный, таким образом, зависит от цвета представления под TabBar (т. е. цвет представления каждого члена viewController влияет на внешний вид TabBar.).

поэтому я установил ниже код, который не будет затронут.

self.tabBarController.tabBar.translucent = false;

вместе с ответом Эда вот полный код, который я использую сейчас.

self.tabBarController.tabBar.barTintColor = [UIColor blackColor];
self.tabBarController.tabBar.translucent = false;
self.tabBarController.tabBar.tintColor = [UIColor blueColor];

протестировано в iOS 8 для постоянного цвета текста (выбран/не выбран) и цвета изображения (выбран/не выбран) без создайте два изображения с разными цветами вкладки foreach:

цвет текста:

[[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];

изображения цвет: (предполагая, что исходные изображения имеют цвет, который вы хотите отобразить как невыбранные)

на UITabBarController подкласс -awakeFromNib :

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

кредиты: весь интернет и переполнение стека XD


код бесплатный способ изменить цвет текста в панели вкладок:

Если вы просто используете iOS 10, вы можете изменить оттенок изображения в панели вкладок

enter image description here

Если вы также поддерживаете iOS 9 и ниже, то вы также должны добавить tintColor к атрибутам среды выполнения определителя пользователя в каждом элементе панели вкладок

enter image description here

Если вы также хотите изменить цвет значка, убедитесь, что правильное цветное изображение находится в ваша папка assest и изменить рендеринг как оригинальное изображение

enter image description here


Это должно отлично работать для iOS 8 также

для невыбранного элемента таббара:

[[UIView appearanceWhenContainedIn:[UITabBar class], nil] setTintColor: [UIColor whiteColor]];

для выбранного элемента вкладками:

[[UITabBar appearance] setTintColor:[UIColor orangeColor]];

[[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                           [UIColor whiteColor], UITextAttributeTextColor,
                                                           nil] 

использовать self.tabBarController.tabBar.barStyle = UIBarStyleBlack; чтобы сделать панель вкладок черной


вы попробуйте

for (UITabBarItem *item in self.tabBarController.tabBar.items) {
        item.image = [[UIImage imageNamed:@"youimage.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

        [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                           [UIColor whiteColor], UITextAttributeTextColor,
                                                           nil] forState:UIControlStateNormal];

        item.selectedImage = [UIImage imageNamed:@"youimage.png"];
    }

@Usharao ответ выше работал для меня;

моя проблема была при запуске всех моих TabBarItems казалось бы, в выбранном состоянии, все имеют одинаковый "синий" оттенок. При выборе всех вкладок один за другим цветное состояние будет исправлено.

я использовал этот код ниже в моем классе AppDelegate: (совместимый для >= IOS9)

[[UIView appearanceWhenContainedInInstancesOfClasses:@[[UITabBar class]]] 
                                        setTintColor:[UIColor lightGrayColor]];