it-swarm.com.ru

Как изменить цвет UITabBar Selection

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

33
saikamesh

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

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

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

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

 enter image description here

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

55
Behdad

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

19
Daniele Grassi

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

[[self tabBar] setTintColor:[UIColor redColor]];
15
Kyle Clegg

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

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

[[self tabBar] setSelectedImageTintColor:[UIColor greenColor]]; 
11
Daniel

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

[UITabBarItem.appearance setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor greenColor]} forState:UIControlStateNormal];    
[UITabBarItem.appearance setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor purpleColor]} forState:UIControlStateSelected];
6
Gabriel.Massana

 enter image description here

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

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

 enter image description here

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

 enter image description here

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

 enter image description here

Все сделано.

5
Zaid Pathan

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

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

5
Vrutin Rathod

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

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

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

4
amattn

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

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

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

Пожалуйста, извините за ужасные цвета!

3
Ben Clayton

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

UITabBar.appearance().tintColor = UIColor.redColor()
2
Andrey Gordeev

iOS 5.0 исправляет эту проблему, но решение находится под NDA. Посмотрите UITabBar в своей документации, чтобы получить ЛЕГКИЙ способ сделать то, что вы хотите сделать.

1
Ethan Allen

Я нашел самое простое решение - 

  1. Выберите панель вкладок в контроллере панели вкладок 

  2. Установить цвет оттенка изображения 

  3. Установить оттенок цвета 

Для справки смотрите прикрепленное изображение.

 enter image description here

0
Sachin Nautiyal