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

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

Ответ 1

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

1) Если вы хотите настроить сам TabBar, вам нужно установить 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];

Ответ 2

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

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

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

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

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

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

Ответ 3

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

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

self.tabBarController.tabBar.translucent = false;

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

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

Ответ 4

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

Цвет текста:

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

Ответ 5

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

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

введите описание изображения здесь

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

введите описание изображения здесь

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

введите описание изображения здесь

Ответ 6

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

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

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

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

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

Ответ 7

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

Ответ 8

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

Ответ 9

Вы попробуете его

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"];
    }

Ответ 10

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

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

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

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

Ответ 11

Теперь с iOS10 можно использовать

@property (nonatomic, readwrite, copy, nullable) UIColor *unselectedItemTintColor

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

Таким образом, пара свойств tintColor и unselectedItemTintColor дает нам полный контроль над предметами цветов.