Мне нужно изменить цвет выделения UITabBar от голубого до красного. Как мы это делаем.
Как изменить цвет выделения UITabBar
Ответ 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
в Атрибуты времени выполнения, определенные пользователем.
Все сделано.