web-dev-qa-db-fra.com

Comment changer la couleur de sélection UITabBar

Je dois changer la couleur de sélection de UITabBar du bleu par défaut au rouge. Comment faisons-nous cela.

33
saikamesh

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.

  1. Sélectionnez la barre UITabBar dans le plan du document. (NOT le contrôleur avec l'icône jaune.)
  2. Sélectionnez Inspecteur d'identité dans la zone Utilitaires.
  3. Cliquez sur le + dans "Attributs d'exécution définis par l'utilisateur".
  4. Ajoutez un chemin de clé "tintColor" de type "Color" et la couleur souhaitée.

Cela devrait le faire. Vous pouvez le comparer à la capture d'écran ci-dessous.

 enter image description here

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.

55
Behdad

Dans IOS5, UITabBar a une propriété selectedImageTintColor qui fait ce dont vous avez besoin.

19
Daniele Grassi

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]];
15
Kyle Clegg

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]]; 
11
Daniel

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];
6
Gabriel.Massana

 enter image description here

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

 enter image description here

Étape 2: Sélectionnez votre objet UITabBar et définissez la couleur Image Tint. Cette couleur sera la couleur de l'onglet sélectionné.

 enter image description here

É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.

 enter image description here

Terminé.

5
Zaid Pathan

Changez simplement la propriété suivante dans Interface Builder pour le TabBar

Évidemment dans mon cas, c'est blanc.

5
Vrutin Rathod

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. 

4
amattn

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!

3
Ben Clayton

À partir de iOS 8, c'est aussi simple que:

UITabBar.appearance().tintColor = UIColor.redColor()
2
Andrey Gordeev

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.

1
Ethan Allen

J'ai trouvé la solution la plus simple - 

  1. Sélectionner la barre d'onglets dans le contrôleur de la barre d'onglets 

  2. Définir la couleur de teinte de l'image 

  3. Définir la couleur de teinte 

Pour référence, voir l'image ci-jointe.

 enter image description here

0
Sachin Nautiyal