Подтвердить что ты не робот

Как изменить цвет выделения UITabBar

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

4b9b3361

Ответ 1

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

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

  • Выберите UITabBar в контуре документа. ( НЕ Контроллер с желтым значком.)
  • Выберите "Инспектор удостоверений" в области "Утилиты".
  • Нажмите "+" в "Пользовательские атрибуты времени выполнения".
  • Добавьте ключевой путь "tintColor" типа "Цвет" и нужный вам цвет.

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

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

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

Ответ 2

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

Ответ 3

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

[[self tabBar] setTintColor:[UIColor redColor]];

Ответ 4

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

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

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

Ответ 5

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

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

Ответ 6

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

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

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

Ответ 7

Просто измените следующее свойство в Interface Builder для TabBar

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

Ответ 8

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

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

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

Извините за ужасные цвета!

Ответ 9

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

UITabBar.appearance().tintColor = UIColor.redColor()

Ответ 10

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

Ответ 11

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

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

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

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

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

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

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

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

Все сделано.