Modifier la police de la barre de navigation

La question est simple et facile, la réponse malheureusement pas.

Comment pouvez-vous changer la police du texte dans UINavigationBar ?

À partir d’iOS 7 et versions ultérieures:

 NSShadow* shadow = [NSShadow new]; shadow.shadowOffset = CGSizeMake(0.0f, 1.0f); shadow.shadowColor = [UIColor redColor]; [[UINavigationBar appearance] setTitleTextAtsortingbutes: @{ NSForegroundColorAtsortingbuteName: [UIColor greenColor], NSFontAtsortingbuteName: [UIFont fontWithName:@"Helvetica" size:20.0f], NSShadowAtsortingbuteName: shadow }]; 

A partir d’iOS 5 et versions ultérieures:

  [[UINavigationBar appearance] setTitleTextAtsortingbutes: @{ UITextAtsortingbuteTextColor: [UIColor greenColor], UITextAtsortingbuteTextShadowColor: [UIColor redColor], UITextAtsortingbuteTextShadowOffset: [NSValue valueWithUIOffset:UIOffsetMake(0.0f, 1.0f)], UITextAtsortingbuteFont: [UIFont fontWithName:@"Helvetica" size:20.0f] }]; 

Plus tôt que iOS 5:

 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 400, 44)]; label.backgroundColor = [UIColor clearColor]; label.font = [UIFont boldSystemFontOfSize:20.0]; label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5]; label.textAlignment = UITextAlignmentCenter; label.textColor =[UIColor whiteColor]; label.text=self.title; self.navigationItem.titleView = label; [label release]; 

Si vous souhaitez modifier la police dans Interface Builder lui-même (sans aucun code), voici comment procéder dans Xcode6:

1.) Trouver la vue de la barre de navigation sous la scène du contrôleur de navigation entrer la description de l'image ici

2.) Modifiez les atsortingbuts de police de titre, de couleur et d’ombre dans l’inspecteur des atsortingbuts. entrer la description de l'image ici

La réponse ci-dessus fonctionne. J’appendais la ligne suivante avant la dernière ligne. Si ce n’est pas le cas, il semble que l’étiquette ne soit pas alignée au centre si un bouton de retour apparaît sur le côté gauche, mais pas de bouton droit.

 ... [self.navigationItem.titleView sizeToFit]; [label release]; // not needed if you are using ARC 

Mis à jour pour iOS 7:

 [[UINavigationBar appearance] setTitleTextAtsortingbutes: [NSDictionary dictionaryWithObjectsAndKeys: [UIColor colorWithRed:245.0/255.0 green:245.0/255.0 blue:245.0/255.0 alpha:1.0], NSForegroundColorAtsortingbuteName, shadow, NSShadowAtsortingbuteName, [UIFont fontWithName:@"HelveticaNeue-CondensedBlack" size:21.0], NSFontAtsortingbuteName, nil]]; 

courtoisie de:

http://www.appcoda.com/customize-navigation-status-bar-ios-7/

Pas sûr pourquoi toutes les réponses incluaient l’ombre. L’ajout des lignes qui manipulent l’ombre ne fait rien pour changer la police du texte. Ces 2 lignes de code fonctionneront pour iOS 8.4 et Swift

 let atsortingbutesDictionary = [NSFontAtsortingbuteName: UIFont(name: "Helvetica Neue", size: 14)!] navigationController!.navigationBar.titleTextAtsortingbutes = atsortingbutesDictionary 

titleTextAtsortingbutes stocke un dictionnaire qui dictera la police, la couleur, la taille et d’autres atsortingbuts du titre de la barre de navigation.

À partir d’iOS 5, vous pouvez utiliser le proxy d’apparence.

La réponse se trouve dans une copie de cette question: https://stackoverflow.com/a/12364740/883413

  NSShadow *shadow = [NSShadow new]; [shadow setShadowColor: [UIColor clearColor]]; [shadow setShadowOffset: CGSizeMake(0.0f, 1.0f)]; [self.navigationController.navigationBar setTitleTextAtsortingbutes:[NSDictionary dictionaryWithObjectsAndKeys: [UIFont fontWithName:@"TimeBurner" size:27.0f], NSFontAtsortingbuteName, [UIColor whiteColor], NSForegroundColorAtsortingbuteName, shadow, NSShadowAtsortingbuteName,nil]];