web-dev-qa-db-fra.com

Comment changer la couleur du texte de l'article de la barre d'onglets

enter image description here

Comment puis-je changer la couleur du texte "Plus .." dans la barre de tabulation pour qu'elle corresponde à la couleur de son icône. (Pour l'instant, la performance est sélectionnée dans la barre d'onglets)

J'ai essayé de définir TitleTextAttributes. 

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

Mais la couleur du texte est toujours jaune. même lorsque l'élément est sélectionné. Comme çaenter image description here

J'essaie de définir le blanc lorsque cette option est sélectionnée et si elle est désélectionnée, elle doit correspondre à la couleur de l'icône. Merci ... Toutes les suggestions seront vraiment utiles.

14
Priyatham51

J'ai trouvé la réponse à ma propre question. 

Nous pouvons définir perforamceItem setTitleTextAttributes: pour deux états différents.

  • forState:UIControlStateNormal 
  • forState:UIControlStateHighlighted

J'ai ajouté le code suivant 

 [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];

Je dois remplacer la couleur jaune par la couleur de mes ICÔNES. C'est comme ça qu'ils regardent maintenant. 

Quand plus est sélectionné

When More is selected

Quand la performance est sélectionnée

When Performance is Selected

17
Priyatham51

Le code de la réponse acceptée ne fonctionne pas pour moi. 

Voici le code, ça marche:

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

Manière sans code de faire ceci:

Si vous utilisez uniquement iOS 10, vous pouvez modifier la teinte de l'image dans la barre d'onglets.

 enter image description here

Si vous prenez également en charge iOS 9 et versions antérieures, vous devez également ajouter tintColor aux attributs d'exécution de votre utilisateur dans chaque élément de la barre d'onglets.

 enter image description here

si vous souhaitez également changer la couleur de votre icône, assurez-vous que la bonne image de couleur est dans votre dossier assest et modifiez le rendu par rapport à l'image originale.

 enter image description here

6

Ceci est la version 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)

        }

Ou vous pouvez simplement changer dans 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

Swift 4:

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

C’est facile, il suffit de sous-classer UITabBarItem et de l’affecter à la classe de votre élément de barre d’onglet dans le storyboard ou le code. Le ci-dessous fonctionne parfaitement pour moi.

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)
    }
}

la solution de Skywinder est bonne mais elle déclenche une portée mondiale.

1
PeiweiChen

Pour une solution Swift, supposons que l’inférence de type soit votre ami:

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

La version rapide de @skywinder répond: 

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

Cela fonctionne correctement ..

 [[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