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:

  1. la UITabBar elle-même est complètement noir
  2. la couleur du texte de l'élément de titres est blanc dans non souligné état
  3. la couleur du texte de l'élément de titres est rouge dans mis en évidence état
  4. 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:

Comment personnaliser UITabBar et UITabBarItem sur iOS 7 et iOS 8?

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:

Comment personnaliser UITabBar et UITabBarItem sur iOS 7 et iOS 8?

C'est à quoi il ressemble quand l'élément est pas sélectionné:

Comment personnaliser UITabBar et UITabBarItem sur iOS 7 et iOS 8?

Et ici, il est dans l'énoncé, comme le mentionne l'icône disparaît complètement:

Comment personnaliser UITabBar et UITabBarItem sur iOS 7 et iOS 8?

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