Il n'y a rien de mal avec les autres réponses. Je partage juste la version du storyboard pour définir la police.
1. Sélectionnez votre barre de navigation dans votre contrôleur de navigation
2. Modifiez la police du titre dans l'inspecteur d'attributs
(Vous devrez probablement basculer la teinte de la barre pour la barre de navigation avant que Xcode prenne la nouvelle police)
Remarques (mises en garde)
Vérifié que cela fonctionne sur Xcode 7.1.1+. ( Voir les exemples ci-dessous )
- Vous devez changer la teinte de la barre de navigation avant que la police ne prenne effet (cela semble être un bogue dans Xcode; vous pouvez la rétablir par défaut et la police restera)
- Si vous choisissez une police système ~ Assurez-vous que la taille n'est pas 0.0 (sinon la nouvelle police sera ignorée)
- On dirait que cela fonctionne sans problème lorsqu'une seule NavBar est dans la hiérarchie des vues. Il semble que les NavBars secondaires de la même pile soient ignorées. (Notez que si vous affichez la barre de navigation du contrôleur de navigation principal, tous les autres paramètres de barre de navigation personnalisés sont ignorés).
Gotchas (deux)
Certains d'entre eux sont répétés, ce qui signifie qu'ils méritent probablement d'être notés.
- Parfois, le XML du storyboard est corrompu. Cela vous oblige à revoir la structure dans Storyboard en mode Code Source (cliquez avec le bouton droit sur le fichier de storyboard> Ouvrir en tant que ...)
- Dans certains cas, la balise navigationItem associée à l'attribut d'exécution défini par l'utilisateur était définie comme un enfant xml de la balise de vue au lieu de la balise de contrôleur de vue. Si c'est le cas, retirez-le des balises pour un fonctionnement correct.
- Activez la teinte NavBar pour vous assurer que la police personnalisée est utilisée.
- Vérifiez le paramètre de taille de la police sauf si vous utilisez un style de police dynamique
- La hiérarchie de la vue remplacera les paramètres. Il semble qu'une police par pile soit possible.
Résultat
Échantillons
- Vidéo montrant plusieurs polices dans un projet avancé
- Téléchargement de source simple
- Téléchargement de projet avancé ~ Affiche plusieurs polices NavBar et une solution de contournement de polices personnalisées
- Vidéo montrant plusieurs polices et polices personnalisées
Gestion des polices personnalisées
Remarque ~ Une belle liste de contrôle peut être trouvée sur le site Web Code With Chris et vous pouvez voir l'exemple de projet de téléchargement.
Si vous avez votre propre police et que vous souhaitez l'utiliser dans votre storyboard, il existe un ensemble de réponses décentes à la question SO suivante . Une réponse identifie ces étapes.
- Obtenez votre fichier de police personnalisé (.ttf, .ttc)
- Importez les fichiers de polices dans votre projet Xcode
- Dans l'app-info.plist, ajoutez une clé nommée Fonts fournie par l'application.C'est un type de tableau, ajoutez tous vos noms de fichiers de polices au tableau, note: y compris l'extension de fichier.
- Dans le storyboard, dans la barre de navigation, accédez à l'inspecteur d'attributs, cliquez sur le bouton icône droit de la zone de sélection de la police.Dans le panneau contextuel, choisissez Police à personnaliser et choisissez la famille du nom de la police incorporée.
Solution de contournement des polices personnalisées
Donc, Xcode semble naturellement pouvoir gérer les polices personnalisées sur UINavigationItem, mais cette fonctionnalité ne se met tout simplement pas à jour correctement (la police sélectionnée est ignorée).
Pour contourner cela:
Une solution consiste à résoudre le problème en utilisant le storyboard et en ajoutant une ligne de code: commencez par ajouter un UIView (UIButton, UILabel ou une autre sous-classe UIView) au contrôleur de vue (pas l'élément de navigation ... Xcode ne permet actuellement pas de le faire. cette). Après avoir ajouté le contrôle, vous pouvez modifier la police dans le storyboard et ajouter une référence en tant que sortie à votre contrôleur de vue. Attribuez simplement cette vue à UINavigationItem.titleView. Vous pouvez également définir le nom du texte dans le code si nécessaire. Bogue signalé (23600285).
@IBOutlet var customFontTitleView: UIButton!
//Sometime later...
self.navigationItem.titleView = customFontTitleView
la source