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:

  1. Copiez le .la fto de fichiers au projet.
  2. confirmez le .les fichiers otf ont fixé le projet comme cible.
  3. a ajouté le .fichiers otf dans "polices fournies par application" dans plist.
  4. Dans les Phases de construction, l' .les fichiers otf sont dans 'Copy Bundle Resources'.
  5. installez la police sur mon Mac.
  6. 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))
  }
}
  1. 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)
  1. mais je ne peux pas le configurer dans interface builder. Une idée?

Screenshots:

Font Font-List

38
demandé sur chengsam 2016-10-21 07:17:54

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

enter image description here

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.

enter image description here

enter image description here

enter image description here

sortie:

enter image description here

"1519200920 mise à jour" Update 1

si votre police personnalisée ne figure toujours pas dans Xcode font list .consultez le lien correspondant à votre question

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:

enter image description here

54
répondu Joe 2017-08-04 09:22:42

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.

    Bebas Neue Whatever

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.

10
répondu Flitskikker 2017-01-27 16:05:32

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.

enter image description here

Étape 2

Cliquez sur le bouton ajouter comme indiqué ci-dessous.

enter image description here

É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..

5
répondu Saranjith 2018-10-04 04:26:55

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!

2
répondu Andrew Van Beek 2017-01-27 17:26:52

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 .

enter image description here

vous devez corriger la plupart des polices Bebas Neue .

1
répondu János 2018-04-06 07:48:01

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 .

0
répondu wj2061 2017-05-23 11:33:26

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...

0
répondu Vishal16 2017-12-28 11:25:59

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).

0
répondu alstr 2018-10-04 12:15:17