27 votes

Comment changer la Couleur du texte dans UITabBarItem dans iOS 5

avec plus d'apparence de contrôle dans iOS 5, comment faire pour changer la UITabBarItem la couleur du texte ? par défaut le blanc pour une autre couleur ?

EDIT:solution de travail

  [[UITabBarItem appearance] setTitleTextAttributes:
         [NSDictionary dictionaryWithObjectsAndKeys:
          [UIColor blackColor], UITextAttributeTextColor, 
          [UIColor whiteColor], UITextAttributeTextShadowColor, 
          [NSValue valueWithUIOffset:UIOffsetMake(0, 1)], UITextAttributeTextShadowOffset, 
          [UIFont fontWithName:@"Rok" size:0.0], UITextAttributeFont, 
          nil] 
                                              forState:UIControlStateNormal];

38voto

Kjuly Points 15089

Voulez-vous dire ce que c'est? Gardez à l'esprit, cela ne fonctionne que pour iOS5.0 ou plus tard.

if ([self.tabBarItem respondsToSelector:@selector(setTitleTextAttributes:)]) {
    NSLog(@"*** Support method(iOS 5): setTitleTextAttributes:");
    [self.tabBarItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                [UIFont fontWithName:@"AmericanTypewriter" size:20.0f], UITextAttributeFont,
                                                [UIColor blackColor], UITextAttributeTextColor,
                                                [UIColor grayColor], UITextAttributeTextShadowColor,
                                                [NSValue valueWithUIOffset:UIOffsetMake(0.0f, 1.0f)], UITextAttributeTextShadowOffset,
                                                nil]];
}

La documentation d'Apple sur la personnalisation de l'apparence:

Dans iOS v5.0 et versions ultérieures, vous pouvez personnaliser l'apparence des barres d'onglets par la mise en texte de l'étiquette article attributs à l'aide de l'apparence des sélecteurs déclaré par UIBarItem. Vous pouvez également utiliser l'une des méthodes indiquées dans la section "Personnalisation de l'Apparence." Vous pouvez personnaliser l'apparence de tous les segmenté contrôles à l'aide de l'apparition de proxy (par exemple, [UITabBarItem apparence]), ou tout simplement d'une seule barre d'onglet. Vous pouvez également fournir fini sélectionnés et non sélectionnés images à l'aide des méthodes indiquées dans la section "Gestion du Fini de l'Image Sélectionnée"; ces méthodes, cependant, ne participent pas à la UIAppearance proxy de l'API (voir UIAppearance). UIKit ne fournissent maintenant automatique de traitement d'images finies. Pour de bons résultats, vous devez fournir fini sélectionnés et non sélectionnés images en paires à l'aide de setFinishedSelectedImage:withFinishedUnselectedImage:.

Edit: Voici un autre exemple d'utilisation de la UIAppearance système et la NSDictionary la syntaxe littérale:

[[UITabBarItem appearance] setTitleTextAttributes:@{
                         UITextAttributeFont : [UIFont fontWithName:@"AmericanTypewriter" size:20.0f],
                    UITextAttributeTextColor : [UIColor blackColor],
              UITextAttributeTextShadowColor : [UIColor grayColor],
             UITextAttributeTextShadowOffset : [NSValue valueWithUIOffset:UIOffsetMake(0.0f, 1.0f)]}];

13voto

proca 2.0 Points 1476
[[UITabBarItem appearance] setTitleTextAttributes:@{
                             UITextAttributeFont : [UIFont fontWithName:@"HelveticaNeue-Bold" size:10.0f],
                        UITextAttributeTextColor : [UIColor colorWithRed:0/255.0 green:48/255.0 blue:92/255.0 alpha:1.0],}
                                         forState:UIControlStateNormal];

[[UITabBarItem appearance] setTitleTextAttributes:@{
                             UITextAttributeFont : [UIFont fontWithName:@"HelveticaNeue-Bold" size:10.0f],
                        UITextAttributeTextColor : [UIColor colorWithRed:0/255.0 green:138/255.0 blue:196/255.0 alpha:1.0],}
                                         forState:UIControlStateSelected];

10voto

1101 Points 454

UITextAttributeFont, UITextAttributeTextColor etc. sont déconseillés dans iOS 7.0.

Vous devez utiliser:

NSFontAttributeName, NSParagraphStyleAttributeName, NSForegroundColorAttributeName, NSBackgroundColorAttributeName, NSLigatureAttributeName, NSKernAttributeName, NSStrikethroughStyleAttributeName, NSUnderlineStyleAttributeName, NSStrokeColorAttributeName,  NSStrokeWidthAttributeName, NSShadowAttributeName and NSVerticalGlyphFormAttributeName

4voto

seanoshea Points 277

Spécialement pour iOS 7, essayez d'utiliser NSForegroundColorAttributeName au lieu de UITextAttributeTextColor

1voto

Jove Kuang Points 86

Je n'ai pas assez de points de réputation pour ajouter un commentaire, donc je vais ajouter une autre réponse ici.

J'ai eu le même problème et cherché le passé des heures et finalement rendu compte que mon problème est que je n'ai pas mis le code dans la méthode viewWillAppear. Vous ne savez pas si c'est le bon sens comme je viens de commencer avec objective-c, mais pensé que ce doit être un autre morceau de l'information importante à la réponse que le même code ne fonctionne pas à l'intérieur de viewDidLoad.

En fonction de ce post, ce code ne fonctionne que si on les mettait dans la méthode viewWillAppear.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X