iOS Application de polices personnalisées aux contrôles dans un Storyboard


Exemple

L'exemple suivant montre comment appliquer des polices personnalisées à une barre de navigation et inclut des correctifs pour certains comportements inhabituels trouvés dans Xcode. Il est également possible d'appliquer les polices personnalisées à tout autre contrôle UIC tel que UILabels , UIButtons , etc. en utilisant l'inspecteur d'attributs après l'ajout de la police personnalisée au projet. Veuillez noter les liens externes vers des échantillons de travail et des vidéos en bas.

  1. Sélectionnez votre barre de navigation dans votre contrôleur de navigation

navbar

  1. Modifier la police de titre dans l'inspecteur d'attributs

police de titre

(Vous devrez probablement basculer la barre de teinte pour la barre de navigation avant que Xcode ne décroche la nouvelle police)

Notes (mises en garde)

Vérifié que cela fonctionne sur Xcode 7.1.1+. ( Voir les exemples ci-dessous )

  1. Vous devez basculer la teinte de la barre de navigation avant que la police ne prenne effet (cela ressemble à un bogue dans Xcode; vous pouvez le rétablir par défaut et la police va coller)
  2. Si vous choisissez une police système, assurez-vous que la taille n'est pas 0.0 (sinon la nouvelle police sera ignorée)

Taille

  1. Cela semble fonctionner sans problème quand une seule barre de navigation est dans la hiérarchie des vues. Il semble que les NavBars secondaires dans la même pile soient ignorées. (Notez que si vous affichez la barre de navigation du contrôleur de navigation maître, tous les autres paramètres de la barre de navigation personnalisée sont ignorés).

Gotchas (deux)

Certains d'entre eux sont répétés, ce qui signifie qu'ils méritent d'être notés.

  1. Parfois, le storyboard xml est corrompu. Cela nécessite que vous examiniez la structure dans Storyboard en mode Code source (cliquez avec le bouton droit sur le fichier storyboard> Ouvrir en tant que ...)
  2. Dans certains cas, la balise navigationItem associée à l'attribut runtime défini par l'utilisateur a été définie comme enfant xml de la balise view au lieu de la balise du contrôleur de vue. Si oui, retirez-le entre les balises pour un fonctionnement correct.
  3. Activez la teinte NavBar pour vous assurer que la police personnalisée est utilisée.
  4. Vérifiez le paramètre de taille de la police à moins d'utiliser un style de police dynamique
  5. La hiérarchie des vues remplace les paramètres. Il semble qu'une police par pile soit possible.

Résultat

navbar-italic

Des échantillons

Gestion des polices personnalisées

Remarque ~ Vous pouvez trouver une liste de contrôle agréable à partir du site Web Code With Chris et vous pouvez voir le projet de téléchargement exemple.

Si vous avez votre propre police et que vous souhaitez l'utiliser dans votre storyboard, il existe un ensemble correct de réponses à la question SO suivante. Une réponse identifie ces étapes.

  1. Obtenez votre fichier de police personnalisé (.ttf, .ttc)
  2. Importer les fichiers de police dans votre projet Xcode
  3. Dans app-info.plist, ajoutez une clé nommée Fonts fournie par application.Il s'agit d'un type de tableau, ajoutez tous les noms de fichiers de polices au tableau, notez: y compris l'extension du fichier.
  4. 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 polices. Dans le panneau contextuel, choisissez Police à personnaliser et choisissez la famille de votre nom de police incorporé.

Solution de contournement de police personnalisée

Donc, Xcode semble naturellement pouvoir gérer les polices personnalisées sur UINavigationItem, mais cette fonctionnalité ne se met pas à jour correctement (la police sélectionnée est ignorée).

UINavigationItem

Pour contourner ce problème:

L'une des méthodes consiste à utiliser le storyboard et à ajouter une ligne de code: ajoutez d'abord un UIView (UIButton, UILabel ou une autre sous-classe UIView) au View Controller (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 prise à votre View Controller. Attribuez simplement cette vue à UINavigationItem.titleView. Vous pouvez également définir le nom du texte dans le code si nécessaire. Bug signalé (23600285).

@IBOutlet var customFontTitleView: UIButton!

//Sometime later...    
self.navigationItem.titleView = customFontTitleView

Remarque - Cet exemple est dérivé d'une réponse que j'ai publiée sur SO ( ici ).