Xcode 8 la police personnalisée ne s'affiche pas dans interface builder
j'essaie d'utiliser une police personnalisée (Bebas Neue) dans mon application iOS. Les mesures que j'ai prises sont:
- Copiez le .la fto de fichiers au projet.
- confirmez le .les fichiers otf ont fixé le projet comme cible.
- a ajouté le .fichiers otf dans "polices fournies par application" dans plist.
- Dans les Phases de construction, l' .les fichiers otf sont dans 'Copy Bundle Resources'.
- installez la police sur mon Mac.
- Essayez d'imprimer toutes les polices disponibles, mais je ne peux pas voir ma police personnalisée.
le code que j'ai utilisé:
for name in UIFont.familyNames() {
println(name)
if let nameString = name as? String
{
println(UIFont.fontNamesForFamilyName(nameString))
}
}
- essayer de définir la police dans le code et cela a fonctionné.
le code que j'ai utilisé:
textLabel?.font = UIFont(name: "BebasNeueRegular", size: 14)
- mais je ne peux pas le configurer dans interface builder. Une idée?
Screenshots:
8 réponses
essayez les étapes suivantes: code testé dans Swift 3
.
Étape 1 : ajoutez votre police personnalisée dans votre projet( assurez-vous que ajouter à la cible cocher.)J'utilise " PermanentMarker.ttf", " Pecita.otf" et " AROLY.ttf" police comme un test de la police.
Note: l'Appui de la police de Type ttf et otf (Les deux types de police doivent fonctionner)
Step 2 : modifier la demande-info.dossier plist. Ajouter la touche " polices fournies par application "dans une nouvelle rangée et ajouter" PermanentMarker.ttf" comme un nouvel élément dans le 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
Maintenant, vous pouvez 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
après, importé votre personnalisez la police et mettez à jour votre plist
.sélectionnez label
à partir de votre storyBoard
, allez à Attributes Inspector
sous Label
> Text type
> sélectionnez Attributed
et choisissez votre custom font
à partir de la liste.
sortie:
"1519200920 mise à jour" Update 1
si votre police personnalisée ne figure toujours pas dans Xcode font list
.consultez le lien correspondant à votre question
-
http://codewithchris.com/common-mistakes-with-adding-custom-fonts-to-your-ios-app/
-
police personnalisée ne s'affichant pas sur certains simulateurs
Note: encore,vous pouvez assigner BebasNeue
ou custom font
programmatiquement à votre étiquette ou bouton, etc. même pas dans votre interface Builder
.Si vous avez de la difficulté à définir la police de votre objet de façon programmatique.essayez la méthode ci-dessous.
assignent font to UILabel:
label?.font = UIFont(name: "BebasNeue", size: 35) // Set to any size
assignent font to UIButton:
button.titleLabel?.font = UIFont(name: "BebasNeue", size: 35)
assignent font to UITextField:
textField.font = UIFont(name: "BebasNeue", size: 25)
assignent font to UINavigationBar:
navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: UIFont(name: "BebasNeue", size: 25)!, NSForegroundColorAttributeName: UIColor.red]
assignent font to UIToolBar:
UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: UIFont(name: "BebasNeue", size: 25.0)!], for: UIControlState.normal)
sortie:
quand j'utilise la même police (Bebas Neue), j'éprouve exactement le même problème: la police n'apparaît pas dans la liste des polices pour les commandes Plain
.
il le fait pour les contrôles Attributed
, comme décrit dans la mise à jour 2 dans Joes post, mais alors vous êtes en train de changer le attributedText
au lieu de la régulière text
, ce qui peut conduire à un comportement indésirable. Par exemple, vous devrez jouer avec NSMutableAttributedString
pour changer la couleur du texte à l'exécution.
j'ai fait quelques recherches sur cette question. J'ai utilisé FontLab Studio pour modifier la police et faire quelques tests. J'ai utilisé Bebas Neue version 1.400 (datée du 15 septembre 2014) de dafont.com .
- peut-être que le fichier de police a été corrompu. Ré-enregistrées .feo et .ttf: n'a pas fonctionné.
- Peut-être que les méta-données de la police ont été endommagés. Copié tous les glyphes à une nouvelle police et nommé que Bebas Neue: n'a pas fonctionné.
- j'ai renommé la police de Bebas Neue à BN: ça marche! mais pourquoi?
- peut-être que vous ne pouvez pas utiliser "Neue" dans un nom de police (puisque Helvetica Neue était la police du système iOS jusqu'à iOS 8). Renommé la police pour tester Neue: fonctionne toujours.
- peut-être que vous ne pouvez pas utiliser "Bebas" dans un nom de police alors? Renommer la police de Bebas: fonctionne toujours.
- quoi... Juste pour être sûr, j'ai changé le nom de la police de nouveau à Bebas Neue: ne fonctionne plus.
- j'ai aussi essayé BebasNeue: N'a pas non plus fonctionné.
-
puis j'ai changé le nom en" Bebas Neue Whatever: ça marche.
Je ne comprends vraiment pas pourquoi cela se produit. Apple ou Xcode ne veulent-ils pas que vous utilisiez "Bebas Neue" ou "BebasNeue" dans L'Interface Builder? J'ai fait installer le Bebas Neue normal. Peut-être que la référence est corrompue? Je ne peux vraiment pas le dire. Peut-être que quelqu'un sur un système propre peut essayer si Bebas Neue travaille dans leur Xcode.
de toute façon, j'ai atteint mon objectif: pouvoir utiliser Bebas Neue (j'ai nommé la version finale "Bebas Neue MyAppName") pour Plain
étiquettes et boutons de style, de sorte que je peux concevoir mon application comme-Est et ne pas avoir à tripoter autour avec des cordes attribuées.
son facile et simple maintenant-testé dans Xcode 10 et swift 4.2
étapes pour ajouter une police à votre Xcode
sélectionnez UILabel, UITextField ou n'importe quoi sous la section polices et suivez
Étape 1
sélectionnez Menu Paramètres À partir du coin gauche de l'écran de sélection de police. Et choisissez l'option font manager.
Étape 2
Cliquez sur le bouton ajouter comme indiqué ci-dessous.
Étape 3
Sélectionnez le dossier qui contient votre police. Il sera chargé dans la liste des polices XCode.
étapes pour ajouter des polices à votre projet
n'oubliez pas d'ajouter une description à votre liste avec la touche Fonts provided by application
et de placer les fichiers de police dans les ressources de copy bundle dans les paramètres de cible du projet.
Oui! thats it.. njoy..
vous pouvez en fait simplement aller dans les polices attribuées, cliquez sur la fenêtre des polices personnalisées. Là, cliquez sur l'engrenage dans le coin supérieur gauche et cliquez sur l'option gérer les polices. Une fenêtre pop-up et sur le dessus et il devrait y avoir un signe pour vous permettre d'ajouter des polices. Il suffit de choisir la police personnalisée que vous avez téléchargé comme xyz.la fft et ensuite, il devrait être ajouté.
Important à noter est que le fichier ttf doit être référencé dans la liste p ainsi que dans votre répertoire de projet!
enfin, j'ai trouvé le cause fondamentale de problèmes avec les polices de Bebas Neue.
Je ne me souviens pas où j'ai téléchargé les polices, mais Bebas Neue fonts are inconsistent .
Télécharger , autrement dit une application appelée Typelight
Ouvrir pas Ordinaire , mais c'est à dire Bold de la police de l' Typelight
.
vous devez corriger la plupart des polices Bebas Neue .
c'était un Vieux bug depuis Xcode 3.x:
il y a un bug/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 programmées (via [UIFont fontWithName:])
il y a des travaux autour comme ce avec User Defined Runtime Attribute
et categories
.
j'ai eu le même problème
a ajouté la police personnalisée et aussi l'attribuer à UILabel
tout le travail amende, mais après quelques fois plus tard, il ne fonctionne pas comme prévu.
essayer toutes les solutions mais rien ne marche pour moi. Voici donc ma solution, revenons à la précédente UILabel
(déjà ont récemment ajouté des polices personnalisées) select->label->sélectionnez nouvellement ajouté la police. Vérifiez les autres polices de contrôle de L'interface.
maintenant ça fonctionne.
Espérons que cette aide newDevs...
C'est encore un problème récurrent pour moi avec Swift 4.2, même sans apporter aucun changement qui le causerait.
supprimer les fichiers de police du projet Xcode et les ajouter corrige le problème (jusqu'à la prochaine fois).