Изменить tintColor невыбранного заголовка элемента UITabBarController и фонового изображения

Как я могу изменить оттенок цвета невыбранного заголовка UITabBarItem и фонового изображения iOS 8?

Цвет по умолчанию для невыбранного состояния - светло-серый, но он не отображается на моем фоне UITabBar с темным оттенком.

Мне бы хотелось, чтобы у моего невыбранного состояния был цвет [UIColor blackColor]

Внутри моего приложения делегат сделал окончательный выбор вариантов: у меня есть

UIImage *deselectedE = [[UIImage imageNamed:@"mincraft_axe_green_32.png"] imageWithRenderingMode:UIImageRenderingModeAutomatic];
UIImage *selectedE = [[UIImage imageNamed:@"mincraft_axe_green_32.png"] imageWithRenderingMode:UIImageRenderingModeAutomatic];
e.tabBarItem =  [[UITabBarItem alloc] initWithTitle:@"Profile" image:deselectedE selectedImage:selectedE];
[[UITabBar appearance] setTintColor:[UIColor blackColor]];

4 ответа

Решение

Догадаться!

Используйте это, чтобы изменить цвет текста:

[[UITabBarItem appearance] setTitleTextAttributes:@{ NSForegroundColorAttributeName : [UIColor greenColor] }
                                         forState:UIControlStateNormal];
[[UITabBarItem appearance] setTitleTextAttributes:@{ NSForegroundColorAttributeName : [UIColor blackColor] }
                                         forState:UIControlStateSelected];

И убедитесь, что режим рендеринга изображений установлен на ОРИГИНАЛ для изображений

UIImage *deselectedImage = [[UIImage imageNamed:@"deselectedImage"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UIImage *selectedImage = [[UIImage imageNamed:@"selectedImage"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

В вашем AppDelegate.m внутри application didFinishLaunchingWithOptions: используйте следующий код:

//unselected icon tint color 
[[UIView appearanceWhenContainedIn:[UITabBar class], nil] setTintColor:[UIColor redColor]];

//selected tint color 
[[UITabBar appearance] setTintColor:[UIColor greenColor]];

//text tint color 
[[UITabBarItem appearance] setTitleTextAttributes:@{ NSForegroundColorAttributeName : [UIColor whiteColor] }
                                     forState:UIControlStateNormal];

//background tint color 
[[UITabBar appearance] setBarTintColor:[UIColor blueColor]];

Вы также можете визуализировать изображение как оригинал из инспектора атрибутов для файла ресурсов без написания кода.

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

Вы также можете установить его прямо в раскадровке... Проверьте мой ответ здесь: Как установить невыбранный оттенок UITabBarItem, *** включая системные элементы *** (iOS7)

Если вы используете раскадровку, вы также можете установить оба Image за Bar Item а также Selected Image за Selected Bar Item чтобы получить неизменное изображение в tabBar.

В качестве альтернативы в Assets каталог, вы можете выбрать Render As: Original Image в атрибутах вашего изображения (View > Utilities > Show Attributes Inspector или ярлык ⌥⌘4 (Опция + команда + 4))

Другие вопросы по тегам