J'essaie d'utiliser une police personnalisée (Bebas Neue) dans mon application iOS. Les mesures que j'ai prises sont les suivantes:
Le code que j'ai utilisé:
for name in UIFont.familyNames() {
println(name)
if let nameString = name as? String
{
println(UIFont.fontNamesForFamilyName(nameString))
}
}
Le code que j'ai utilisé:
textLabel?.font = UIFont(name: "BebasNeueRegular", size: 14)
Captures d'écran:
Essayez les étapes ci-dessous: Code testé dans Swift 3
.
Étape 1: Ajoutez votre police personnalisée à votre projet (assurez-vous que Ajouter à la cible Cochée). J'utilise "PermanentMarker.ttf", "Pecita.otf" et " "AROLY.ttf" en tant que police test.
Remarque:Type de police pris en charge ttf _ et otf (les deux types de polices devraient fonctionner)
Étape 2: Modifiez le fichier application-info.plist . Ajoutez la clé "Polices fournies par l'application" dans une nouvelle ligne et ajoutez "PermanentMarker.ttf" comme nouvel élément du tableau "_ Polices fournies par l'application".
Votre plist devrait ressembler à ceci
Maintenant, la police sera disponible dans Interface Builder. Pour utiliser la police personnalisée dans le code, nous devons y faire référence par son nom, mais le nom n’est souvent pas le même que le nom de fichier de la police.
Vous pouvez maintenant accéder à la police personnalisée à partir de votre viewController. Je teste la police en plaçant un UIlabel sur le Storyboard comme ci-dessous.
Mise à jour 2:Working Solution
Ensuite, importez votre police personnalisée et mettez à jour votre plist
. Selectlabel
à partir de votre storyBoard
, passez à Attributes Inspector
unLabel
> Text type
> et sélectionnez Attributed
, puis choisissez votre custom font
dans la liste.
Sortie:
_ {Mise à jour 1} _
Si votre police personnalisée ne figure toujours pas dans Xcode font list
., Vérifiez le lien correspondant à votre problème.
Note: Néanmoins, vous pouvez affecter BebasNeue
ou custom font
à votre étiquette ou bouton etc., de manière programmée, même s'il n'apparaît pas dans votre interface Builder
. Si vous ne parvenez pas à définir la police de votre méthode object.try ci-dessous.
Attribuer la police à UILabel:
label?.font = UIFont(name: "BebasNeue", size: 35) // Set to any size
Attribuez la police à UIButton:
button.titleLabel?.font = UIFont(name: "BebasNeue", size: 35)
Attribuer une police à UITextField:
textField.font = UIFont(name: "BebasNeue", size: 25)
Attribuer une police à UINavigationBar:
navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: UIFont(name: "BebasNeue", size: 25)!, NSForegroundColorAttributeName: UIColor.red]
Attribuer une police à UIToolBar:
UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: UIFont(name: "BebasNeue", size: 25.0)!], for: UIControlState.normal)
Sortie:
Lorsque j'utilise la même police (Bebas Neue), je rencontre exactement le même problème: la police n'apparaît pas dans la liste des polices pour les contrôles Plain
.
Cela s'applique aux contrôles Attributed
, comme décrit dans la mise à jour 2 de Joes post, mais vous modifiez en fait la attributedText
au lieu de la text
régulière, ce qui peut entraîner un comportement indésirable. Par exemple, vous devrez manipuler NSMutableAttributedString
pour modifier le texte ou la couleur du texte au moment de l'exécution.
J'ai fait une enquête sur cette question. J'ai utilisé FontLab Studio pour modifier la police et faire des tests. J'ai utilisé la version 1.400 de Bebas Neue (datée du 15 septembre 2014) de dafont.com .
Puis j'ai changé le nom pour Bebas Neue. Peu importe: Cela fonctionne.
Je ne comprends vraiment pas pourquoi cela se produit . Apple ou Xcode ne souhaite-t-il pas que vous utilisiez "Bebas Neue" ou "BebasNeue" dans le Générateur d'interface? J'avais installé le Bebas Neue normal. Peut-être que la référence a été corrompue? Je ne peux vraiment pas dire. Peut-être que quelqu'un sur un système propre peut essayer si Bebas Neue fonctionne dans leur Xcode.
Quoi qu’il en soit, j’ai atteint mon objectif: pouvoir utiliser Bebas Neue (j’ai nommé la version finale "Bebas Neue MyAppName") pour les libellés et boutons de style Plain
, afin que je puisse concevoir mon application telle quelle et ne pas avoir à jouer avec chaînes attribuées.
Etapes pour ajouter une police à votre Xcode
Sélectionnez votre UILabel, UITextField ou ce que vous voulez dans la section Polices et suivez les instructions.
Étape 1
Sélectionnez le menu de configuration dans le coin gauche de l’écran de sélection de police. Et choisissez l'option du gestionnaire de polices.
Étape 2
Cliquez sur le bouton Ajouter comme indiqué ci-dessous.
Étape 3
Sélectionnez le dossier contenant votre police. Il sera chargé dans la liste des polices XCode.
Etapes pour ajouter des polices à votre projet
N'oubliez pas d'ajouter une description à votre plist avec la clé Fonts provided by application
et de placer les fichiers de polices dans les ressources de liasse de copie sous les paramètres de cible du projet.
Oui! thats it .. njoy ..
Enfin, j'ai trouvé la cause racine de problèmes liés aux polices Bebas Neue.
Je ne me souviens pas où j'ai téléchargé les polices, mais les polices Bebas Neue sont inconsistent.
Télécharger i.e. app appelée Typelight
Ouvrez pas Regular, mais c’est-à-dire la police Bold avec Typelight
.
Vous devez corriger la plupart des polices Bebas Neue.
En fait, vous pouvez simplement entrer dans les polices attribuées, cliquez sur la fenêtre de police personnalisée. Là, cliquez sur l'engrenage en haut à gauche et cliquez sur l'option Gérer les polices. Une fenêtre devrait apparaître sur le dessus et il devrait y avoir un signe plus pour vous permettre d'ajouter des polices. Choisissez simplement la police personnalisée que vous avez téléchargée, telle que xyz.tff, puis ajoutez-la.
Il est important de noter que le fichier ttf doit être référencé dans la p-liste ainsi que dans le répertoire de votre projet!
C'était un ancien bogue depuis Xcode 3.x:
il existe un bogue/un problème connu avec IB sur XCode 3.x avec des polices non standard et Interface Builder. Les polices personnalisées doivent généralement être définies par programme (via [UIFont fontWithName:])
Il existe des solutions de contournement telles que this avec User Defined Runtime Attribute
et categories
.
Cela reste un problème récurrent pour moi avec Swift 4.2, même sans apporter les modifications qui pourraient en être la cause.
Le fait de supprimer les fichiers de police du projet Xcode et de les ajouter corrige le problème (jusqu'à la prochaine fois).
J'ai eu le même problème
a ajouté une police personnalisée et l'a assigné à UILabel
tout fonctionnant bien, mais après quelques fois plus tard, il ne fonctionnera plus comme prévu.
Essayer toutes les solutions mais rien ne fonctionne pour moi. Voici donc ma solution, allant encore à la précédente UILabel
(déjà ajouté la police personnalisée) sélectionnez-> étiquette-> sélectionnez la police nouvellement ajoutée. Vérifiez les autres polices de contrôles de l'interface utilisateur.
maintenant cela fonctionne bien.
J'espère que cette aide newDevs ...