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 ça
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.
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.
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];
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.
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.
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.
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
}
Swift 4:
UITabBarItem.appearance().setTitleTextAttributes([NSAttributedStringKey.foregroundColor : UIColor.white], for: .normal)
UITabBarItem.appearance().setTitleTextAttributes([NSAttributedStringKey.foregroundColor : UIColor.red], for: .selected)
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.
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)
}
}
La version rapide de @skywinder répond:
UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.whiteColor()], forState: .Normal)
UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.whiteColor()], forState: .Selected)
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];