Настройка цвета текста на выбранном элементе панели вкладок - PullRequest
9 голосов
/ 04 декабря 2010

Я создал приложение панели вкладок.У меня есть четыре вкладки;на выбранной вкладке мне нужно установить красный цвет для заголовка вкладки.Как я могу это сделать?

Заранее спасибо.

Ответы [ 7 ]

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

Используя протокол UIAppearance (iOS5 +), это теперь возможно, и на самом деле довольно просто.

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

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

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

2 голосов
/ 03 июля 2015

Просто чтобы прояснить ситуацию немного ...

Если вы хотите изменить внешний вид для всех элементов панели вкладок, используйте:

Objective-C :

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

Swift :

UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.someColor()], forState: .Selected)

Однако , если вы просто хотите установить внешний вид одного элемента, сделайте это так:

Объектив-C :

[self.tabBarItem setTitleTextAttributes:@{UITextAttributeTextColor :[UIColor someColor]} forState:UIControlStateSelected];

Swift :

tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.someColor()], forState: .Selected)

Примечание : tabBarItem является собственностью UIViewController.Это означает, что хотя у каждого UIViewController есть это свойство, оно может не совпадать с tabBarItem, которое вы ищете.Это часто тот случай, когда ваш контроллер представления заключен в UINavigationController.В этом случае получите доступ к tabBarItem на контроллере навигации, а не к корневому (или другому) контроллеру представления.

1 голос
/ 25 апреля 2018

Любой, кто ищет решение Swift 4 ..

UITabBarItem.appearance().setTitleTextAttributes([NSAttributedStringKey.foregroundColor: .red], for: .selected)
1 голос
/ 02 ноября 2015

Это быстрая версия: -

    for item in self.mainTabBar.items! {

    let unselectedItem: NSDictionary = [NSForegroundColorAttributeName: UIColor.whiteColor()]
    let selectedItem: NSDictionary = [NSForegroundColorAttributeName: UIColor.whiteColor()]
    item.setTitleTextAttributes(unselectedItem as? [String : AnyObject], forState: .Normal)
    item.setTitleTextAttributes(selectedItem as? [String : AnyObject], forState: .Selected)

    }
1 голос
/ 19 июня 2014

Вот что у меня наконец получилось:

1) Выбранный цвет текста

[[UIView appearance] setTintColor:someColor];

2) Невыбранный текст (также изменяет цвет изображения)

[[UITabBar appearance] setTintColor:anotherColor];
0 голосов
/ 04 декабря 2010

Это возможно с помощью -drawRect:, но при этом вы значительно увеличиваете вероятность отклонения вашего приложения в App Store

0 голосов
/ 04 декабря 2010

Если я правильно понимаю ваш вопрос, вы хотите настроить цвет текста на UITabBarItem s.К сожалению, это действительно не так гибко.Если вы намерены сделать это (что, если вы тщательно не продумали дизайн с помощью профессионала, я рекомендую против!), Вам придется сделать действительно пугающие вещи, чтобы заставить это работать.

Я бы предложил перебирать подпредставления UITabBar (столько уровней, сколько необходимо) и искать UILabel объекты.Если вы найдете их, вы можете изменить их цвет.Если вы этого не сделаете, это означает, что он реализован по-другому (возможно, где-то в методе -drawRect:);если это так, то вам действительно следует сдаться.

Желаем удачи во всем, что вы решите сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...