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