Comment personnaliser UITabBar et UITabBarItem sur iOS 7 et iOS 8?
Je suis googler autour de beaucoup de choses, mais nulle part j'ai trouver un droite et consolidés réponse.
Je veux personnaliser monUITabBarController
tels que:
- la
UITabBar
elle-même est complètement noir - la couleur du texte de l'élément de titres est blanc dans non souligné état
- la couleur du texte de l'élément de titres est rouge dans mis en évidence état
- Utilisation multicolore icônes dans la barre d'onglet
1. Tour UITabBar
noir
Je suppose que j'ai besoin d'utiliser la UIAppearance
API pour cela, et en fait j'ai été en mesure de tourner la UITbarBar
noir à l'aide: [[UITabBar appearance] setBarTintColor:[UIColor blackColor]];
.
2. et 3. Modifier la couleur de l'élément de titres
Cependant, la couleur des éléments de texte ne semble pas faire ce que je veux, après googler autour, les solutions suivantes fait sens pour moi, mais il ne change que le non souligné état à blanc, mis en évidence reste blanc...
NSDictionary *titleAttributes = @{NSForegroundColorAttributeName : [UIColor whiteColor]};
[[UITabBarItem appearance] setTitleTextAttributes:titleAttributes forState:UIControlStateNormal];
UIColor *titleHighlightedColor = [UIColor redColor];
NSDictionary *highlightedTitleAttributes = @{NSForegroundColorAttributeName : titleHighlightedColor};
[[UITabBarItem appearance] setTitleTextAttributes:highlightedTitleAttributes forState:UIControlStateHighlighted];
4. Multicolore éléments
Sur les icônes multicolores, autant par l'approche était simplement de définir les icônes de Storyboards comme ceci:
Mais ce n'est pas faire ce que je veux, il ne montre que l'ensemble de l'icône en gris lorsque l'élément est pas sélectionné. Lorsque l'élément est sélectionné, l'icône disparaît complètement.
C'est l'icône d'origine:
C'est à quoi il ressemble quand l'élément est pas sélectionné:
Et ici, il est dans l'énoncé, comme le mentionne l'icône disparaît complètement:
Donc, ma question est comment je peux atteindre les conditions mentionnées ci-dessus. Ce que je suis actuellement absent? Suis-je mieux de faire tout dans le code que dans les Storyboards?
Note: je suis en ciblant les versions d'iOS 7.0, donc veuillez inclure une version spécifique de l'information si le comportement diffère entre iOS 7 et iOS 8.
OriginalL'auteur nburk | 2014-11-26
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème que vous. Autant que je sache, il n'y a pas de différence pour les différentes versions iOS.
Je l'ai résolu par programmation comme ceci:
Tourner la barre de couleur noir fonctionne comme suit (Vous avez déjà dit) (en AppDelegate):
UITabBar.appearance().barTintColor = UIColor.blackColor()
Pour définir la couleur du titre pour les différents états, j'ai utilisé ce code (dans AppDelegate):
(et 4.) Vous pouvez obtenir les différents élément de couleurs, multicolore, les icônes et les différents élément de couleurs pour les différents états, par réglage de l'image par programmation et de changer le mode de rendu (
imageWithRenderingMode:
) àUIImageRenderingMode.AlwaysOriginal
, il se présente comme suit (le faire dans le premier contrôleur de classe pour tous vos contrôleurs de vue):J'espère que cette aide, si vous avez des questions suivantes, n'hésitez pas à me demander.
UIControlStateHighlighted
au lieu deUIControlStateSelected
, merci pour cette remarque! 🙂 Aussi, le soupçon surUIImageRenderingMode
était vraiment utile!OriginalL'auteur smudis
Solution fournie par smudis est grande et parce que je n'ai pas assez de réputation pour le commentaire j'ai décidé de publier la 3ème partie de smudis solution en Objective-C, dans le cas où ça pourrait aider quelqu'un:
Pour obtenir une référence de la tabBar tapez le code ci-dessus dans AppDelegate de la méthode d'application:didFinishLaunchingWithOptions:
Ensuite le réglage de l'image peut être fait comme suit:
OriginalL'auteur eugen