Je dois changer la couleur de sélection de UITabBar du bleu par défaut au rouge. Comment faisons-nous cela.
Mise à jour septembre 2017: Cela fait deux ans que j'ai écrit cette réponse et comme elle reçoit régulièrement des votes positifs, je dois dire que c'est probablement la pire réponse possible à cette question, elle est sujette aux erreurs à cause des mises à jour iOS, du débogage difficile, etc., veuillez donc ne pas faire les choses que j'ai écrites et appliquer de meilleures solutions telles que les sous-classes UITabBar ou UITabBarController. Merci.
Vous pouvez le faire en définissant un attribut "tintColor" (Key Path) pour vous UITabBar.
Cela devrait le faire. Vous pouvez le comparer à la capture d'écran ci-dessous.
Plus sur ceci: Il y a un attribut "Tint" dans Identity Inspector of UITabBar qui, je le croyais, ferait exactement la même chose mais apparemment, il ne fait rien. Sa valeur par défaut est la couleur de remplissage exacte par défaut lorsqu'un UITabBarItem est sélectionné. Je suppose donc que cela serait corrigé dans la version stable Xcode 7. Doigts croisés.
Dans IOS5, UITabBar a une propriété selectedImageTintColor qui fait ce dont vous avez besoin.
Dans iOS 7, c'est simplement la teinteCouleur. Une façon d'y parvenir pourrait être de sous-classer UITabBarViewController, de définir la classe personnalisée dans le storyboard et, dans votre méthode viewDidLoad
de tabBarVC sous-classé, d'ajouter ceci:
[[self tabBar] setTintColor:[UIColor redColor]];
C'est extrêmement facile
Créez une classe personnalisée de UITabBarController et dans la méthode -(void)viewDidLoad
ajoutez cette ligne:
[[self tabBar] setSelectedImageTintColor:[UIColor greenColor]];
UITextAttributeTextColor étant obsolète dans iOS 7, vous devez utiliser:
[UITabBarItem.appearance setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor greenColor]} forState:UIControlStateNormal];
[UITabBarItem.appearance setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor purpleColor]} forState:UIControlStateSelected];
Pour obtenir le résultat ci-dessus, effectuez les étapes suivantes.
Étape 1: Ajoutez vos images souhaitées dans Assets.xcassets
et assurez-vous qu'elles Render As
: Default
Étape 2: Sélectionnez votre objet UITabBar
et définissez la couleur Image Tint
. Cette couleur sera la couleur de l'onglet sélectionné.
Étape 3: Sélectionnez l'objet UITabBar
et ajoutez Chemin clé: unselectedItemTintColor
, Type: Color
, Valeur: Choose color for unselected item
dans Attributs d'exécution définis par l'utilisateur.
Terminé.
Changez simplement la propriété suivante dans Interface Builder pour le TabBar
Évidemment dans mon cas, c'est blanc.
Le SDK ne rend pas cela facile, mais c'est techniquement possible. Apple pense apparemment que cela fait partie de sa vision d'un look et d'une convivialité cohérents.
UITabBar est une sous-classe de UIView. Vous pouvez toujours sous-classer et implémenter votre propre -drawRect:
Ce n'est pas une tâche facile, cependant, vous devez essentiellement ré-implémenter la classe ou vous risquez des effets secondaires étranges.
Je cherchais un moyen de définir la couleur de texte sélectionnée d'un UITabBarItem et j'ai trouvé une méthode simple et mortelle à l'aide du protocole UIAppearance.
[UITabBarItem.appearance setTitleTextAttributes:@{
UITextAttributeTextColor : [UIColor greenColor] } forState:UIControlStateNormal];
[UITabBarItem.appearance setTitleTextAttributes:@{
UITextAttributeTextColor : [UIColor purpleColor] } forState:UIControlStateSelected];
S'il vous plaît excuser les couleurs affreuses!
À partir de iOS 8, c'est aussi simple que:
UITabBar.appearance().tintColor = UIColor.redColor()
iOS 5.0 résout ce problème mais la solution est sous NDA. Recherchez UITabBar dans votre documentation pour trouver un moyen FACILE de faire ce que vous voulez.