it-swarm.com.ru

Как изменить цвет текста элемента панели вкладок

enter image description here

Как изменить цвет текста «Больше ...» на панели вкладок, чтобы он соответствовал цвету его значка (Прямо сейчас производительность выбирается на панели вкладок)

Я пытался установить TitleTextAttributes. 

[moreItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"HelveticaLTStd-Roman" size:10.0f], NSFontAttributeName,  [UIColor yellowColor],NSForegroundColorAttributeName , nil]

Но при этом цвет текста всегда установлен на желтый. даже когда элемент выбран. Как этоenter image description here

Я пытаюсь установить белый, когда выбран, и когда не выбран, он должен соответствовать цвету значка. Спасибо .. Любые предложения будут действительно полезны.

14
Priyatham51

Я нашел ответ на свой вопрос. 

Мы можем установить perforamceItem setTitleTextAttributes: для двух разных состояний.

  • forState:UIControlStateNormal 
  • forState:UIControlStateHighlighted

Я добавил следующий код 

 [performanceItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"HelveticaLTStd-Roman" size:10.0f], NSFontAttributeName,  [UIColor yellowColor], NSForegroundColorAttributeName,nil] forState:UIControlStateNormal];

[performanceItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"HelveticaLTStd-Roman" size:10.0f], NSFontAttributeName,  [UIColor whiteColor], NSForegroundColorAttributeName,nil] forState:UIControlStateHighlighted];

Мне нужно заменить желтый цвет на цвет моих икон. Вот как они выглядят сейчас. 

Когда выбрано Больше

When More is selected

Когда выбрана производительность

When Performance is Selected

17
Priyatham51

Принятый код ответа не работает для меня. 

Вот код, который работает:

    [[UITabBarItem appearance] setTitleTextAttributes:@{ NSForegroundColorAttributeName : [UIColor yellowColor] }
                                             forState:UIControlStateNormal];
    [[UITabBarItem appearance] setTitleTextAttributes:@{ NSForegroundColorAttributeName : [UIColor whiteColor] }
                                             forState:UIControlStateSelected];
49
skywinder

Код бесплатный способ сделать это:

Если вы используете iOS 10, вы можете изменить оттенок изображения на панели вкладок.

 enter image description here

Если вы также поддерживаете iOS 9 и ниже, вы также должны добавить tintColor к своим пользовательским атрибутам времени выполнения в каждом элементе панели вкладок.

 enter image description here

если вы также хотите изменить цвет значка, убедитесь, что в папке с папками находится правильное цветное изображение, и измените «Отрисовка на Исходное изображение».

 enter image description here

6
Hannah Louisa Carney

Это версия Swift: -

        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)

        }

Или вы можете просто изменить в Appdelegate: -

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.blueColor()], forState: .Selected)
    UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.blackColor()], forState: .Normal)
    // Override point for customization after application launch.
    return true
}
6
Chathuranga Silva

Свифт 4:

UITabBarItem.appearance().setTitleTextAttributes([NSAttributedStringKey.foregroundColor : UIColor.white], for: .normal)
UITabBarItem.appearance().setTitleTextAttributes([NSAttributedStringKey.foregroundColor : UIColor.red], for: .selected)
2
Bruno Paulino

Это легко, просто создайте подкласс UITabBarItem и назначьте его классом элемента панели вкладок в раскадровке или в коде. Ниже работает идеально для меня.

import UIKit

class PPTabBarItem: UITabBarItem {
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        commonInit()
    }
    override init() {
        super.init()
        commonInit()
    }

    func commonInit() {
        self.setTitleTextAttributes([NSFontAttributeName: UIFont.systemFontOfSize(13), NSForegroundColorAttributeName:UIColor.blackColor()], forState: UIControlState.Normal)

        self.setTitleTextAttributes([NSFontAttributeName: UIFont.systemFontOfSize(13), NSForegroundColorAttributeName:UIColor.yellowColor()], forState: UIControlState.Selected)
    }
}

решение Skywinder хорошо, но оно вызывает глобальный охват.

1
PeiweiChen

Для решения Swift пусть вывод типа будет вашим другом:

override func viewWillAppear(animated: Bool) {
  for item in self.tabBar.items! {
    let unselectedItem = [NSForegroundColorAttributeName: UIColor.blackColor()]
    let selectedItem = [NSForegroundColorAttributeName: UIColor.whiteColor()]

    item.setTitleTextAttributes(unselectedItem, forState: .Normal)
    item.setTitleTextAttributes(selectedItem, forState: .Selected)
  }
}
1
paul king

Быстрая версия ответа @skywinder: 

UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.whiteColor()], forState: .Normal)
UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.whiteColor()], forState: .Selected)
1
LHIOUI

Это работает правильно ..

 [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                        [UIColor redColor], NSForegroundColorAttributeName,
                                                       nil] forState:UIControlStateSelected];

    [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                       [UIColor blackColor], NSForegroundColorAttributeName,
                                                       nil] forState:UIControlStateNormal];
0
Zღk