145 votes

Comment puis-je changer la police de UIBarButtonItem?

entrez la description de l'image ici

J'ai un UIBarButtonItem dans mon UIToolBar avec le titre Terminé. Je souhaite maintenant changer la police par défaut en "Trebuchet MS" en gras, comment puis-je effectuer cette tâche? s'il vous plaît guidez-moi sur cette tâche.

221voto

mask Points 1673

Pour être précis, cela peut être fait comme ci-dessous

 [buttonItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: 
    [UIFont fontWithName:@"Helvetica-Bold" size:26.0], NSFontAttributeName,
    [UIColor greenColor], NSForegroundColorAttributeName,
    nil] 
                          forState:UIControlStateNormal];
 

Ou avec la syntaxe littérale d'objet:

 [buttonItem setTitleTextAttributes:@{
     NSFontAttributeName: [UIFont fontWithName:@"Helvetica-Bold" size:26.0],
     NSForegroundColorAttributeName: [UIColor greenColor]
} forState:UIControlStateNormal];
 

133voto

rog Points 2046

Je suis un peu en retard à la fête, mais j'ai pensé contribuent à cette question. Bâtiment sur @masque & @teriiehina de réponse...

Pour ceux qui s'intéressent à l'aide d' UIAppearance de leur style UIBarButtonItems'polices dans l'application, il peut être accompli à l'aide de cette ligne de code:

NSDictionary *barButtonAppearanceDict = @{UITextAttributeFont : [UIFont fontWithName:@"HelveticaNeue-Light" size:12.0]};
[[UIBarButtonItem appearance] setTitleTextAttributes:barButtonAppearanceDict forState:UIControlStateNormal];

Bien sûr, vous pouvez modifier la police et la taille de ce que vous souhaitez. Je préfère mettre ce code dans l' AppDelegate.m le fichier dans l' didFinishLaunchingWithOptions section.

Disponible UITextAttributes (simplement les ajouter à l' NSDictionary):

  • UITextAttributeFont: Changer de police avec un UIFont
  • UITextAttributeTextColor: Changement de couleur avec un UIColor
  • UITextAttributeShadowColor: Changer la couleur de l'ombre avec un UIColor
  • UITextAttributeShadowOffset: Changement de décalage d'ombre avec un UIOffset

130voto

teriiehina Points 1986

UIBarButtonItem héritant de UIBarItem, vous pouvez essayer

 - (NSDictionary *)titleTextAttributesForState:(UIControlState)state
 

mais ceci est pour iOS5 seulement. Pour iOS 3/4, vous devrez utiliser une vue personnalisée.

17voto

David DelMonte Points 1369

Ce sont d'excellentes réponses ci-dessus. Juste mise à jour pour iOS7:

 NSDictionary *barButtonAppearanceDict = @{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Thin" size:18.0] , NSForegroundColorAttributeName: [UIColor whiteColor]};
    [[UIBarButtonItem appearance] setTitleTextAttributes:barButtonAppearanceDict forState:UIControlStateNormal];
 

8voto

Kyle Clegg Points 8441

Pour ce faire, pour quelques - UIBarButtonItems mais pas tous, je vous recommande l'approche suivante.

  1. Créer un UIBarButtonItem sous-classe. Ne pas ajouter quoi que ce soit - que vous ne l'utiliser comme une classe personnalisée dans le storyboard et pour son aspect proxy...
  2. Dans votre scénario, changement de la classe personnalisée pour tous souhaité UIBarButtonItems de votre sous-classe
  3. Dans votre AppDelegate importer votre UIBarButtonItem sous-classe et ajoutez la ligne suivante à l' application:didFinishLaunchingWithOptions:

Dans mon cas, j'ai sous-classé UIBarButtonItem pour le seul but de caractères gras dans le texte:

[[BoldBarButtonItem appearance] setTitleTextAttributes:
  [NSDictionary dictionaryWithObjectsAndKeys: 
    [UIFont boldSystemFontOfSize:18.0], NSFontAttributeName,nil] 
                                              forState:UIControlStateNormal];

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