Как изменить цвет UITabBar Selection - PullRequest
34 голосов
/ 26 апреля 2009

Мне нужно изменить цвет выделения UITabBar с синего на красный по умолчанию. Как нам это сделать.

Ответы [ 12 ]

55 голосов
/ 03 сентября 2015

Обновление за сентябрь 2017 г .: Прошло два года с тех пор, как я написал этот ответ, и поскольку он регулярно получает голоса с повышением, я должен сказать, что это, вероятно, худший из возможных ответов на этот вопрос, он подвержен ошибкам, может сломаться из-за обновлений iOS, затруднен для отладки и т. Д. поэтому, пожалуйста, не делайте того, что я написал, и применяйте лучшие решения, такие как UITabBar или UITabBarController. Благодарю.

Вы можете сделать это, установив атрибут "tintColor" (Key Path) для UITabBar.

  1. Выберите UITabBar в структуре документа. ( НЕ Контроллер с желтым значком.)
  2. Выберите Identity Inspector в области Utilities.
  3. Нажмите «+» в «Определенных пользователем атрибутах времени выполнения».
  4. Добавьте "tintColor" Key Path типа «Color» и нужный вам цвет.

Это должно сделать это. Вы можете проверить это по скриншоту ниже.

enter image description here

Подробнее об этом: В Identity Inspector UITabBar есть атрибут "Оттенок", который, как я полагал, будет делать то же самое, но, очевидно, он ничего не делает. Его значение по умолчанию - это точный цвет заливки по умолчанию, когда выбран UITabBarItem, поэтому я предполагаю, что это будет исправлено в стабильном выпуске Xcode 7. Скрестим пальцы.

19 голосов
/ 16 января 2012

В IOS5 UITabBar имеет selectedImageTintColor свойство, которое делает то, что вам нужно.

15 голосов
/ 25 сентября 2013

В iOS 7 это просто tintColor. Одним из способов сделать это может быть создание подкласса UITabBarViewController, установка пользовательского класса в раскадровке, а в вашем viewDidLoad методе подкласса tabBarVC добавьте следующее:

[[self tabBar] setTintColor:[UIColor redColor]];
11 голосов
/ 03 декабря 2012

Это очень легко

Создайте пользовательский класс UITabBarController и в методе -(void)viewDidLoad добавьте эту строку:

[[self tabBar] setSelectedImageTintColor:[UIColor greenColor]]; 
6 голосов
/ 31 марта 2014

Поскольку UITextAttributeTextColor устарела в iOS 7, вы должны использовать:

[UITabBarItem.appearance setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor greenColor]} forState:UIControlStateNormal];    
[UITabBarItem.appearance setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor purpleColor]} forState:UIControlStateSelected];
5 голосов
/ 17 октября 2017

enter image description here

Для достижения вышеуказанного результата выполните следующие шаги.

Шаг 1: Добавьте нужные изображения в Assets.xcassets и убедитесь, что они Render As: Default

enter image description here

Шаг 2: Выберите ваш UITabBar объект и установите Image Tint цвет, этот цвет будет выбран цветом вкладки

enter image description here

Шаг 3: Выберите UITabBar объект и добавьте Путь ключа : unselectedItemTintColor, Тип : Color, Значение : Choose color for unselected item in Определяемые пользователем атрибуты времени выполнения .

enter image description here

Все сделано.

5 голосов
/ 03 ноября 2016

Просто измените следующее свойство в Интерфейсном Разработчике для TabBar

Очевидно, в моем случае это белый.

4 голосов
/ 26 апреля 2009

SDK не делает это простым, но технически возможно . Apple, очевидно, считает, что это является частью их видения последовательного внешнего вида.

UITabBar является подклассом UIView. Вы всегда можете создать подкласс и реализовать свой собственный -drawRect:

Это не тривиальная задача, однако вам придется существенно заново реализовать класс с нуля, иначе вы рискуете получить некоторые странные побочные эффекты.

3 голосов
/ 16 апреля 2013

Я искал способ установить выбранный цвет текста для UITabBarItem и нашел очень простой метод с использованием протокола UIAppearance.

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

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

Прошу прощения за ужасные цвета!

2 голосов
/ 04 февраля 2016

Начиная с iOS 8 это так же просто, как:

UITabBar.appearance().tintColor = UIColor.redColor()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...