web-dev-qa-db-fra.com

La police personnalisée Xcode 8 n'apparaît pas dans le générateur d'interface

J'essaie d'utiliser une police personnalisée (Bebas Neue) dans mon application iOS. Les mesures que j'ai prises sont les suivantes:

  1. Copiez les fichiers .otf dans le projet.
  2. Confirmez que les fichiers .otf ont défini le projet comme cible.
  3. Ajout des fichiers .otf dans 'Polices fournies par l'application' dans la liste.
  4. Dans les phases de construction, les fichiers .otf se trouvent dans "Copier les ressources de l'ensemble".
  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 définir dans le constructeur d'interface. Une idée?

Captures d'écran:

 Font  Font-List

40
chengsam

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

 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.

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 InspectorunLabel> Text type> et sélectionnez Attributed, puis choisissez votre custom font dans la liste.

 enter image description here

 enter image description here

 enter image description here

Sortie:

 enter image description here

_ {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:

 enter image description here

55
Joe

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 .

  • Peut-être que le fichier de police était en quelque sorte corrompu. Ré-enregistré en tant que .otf et .ttf: n'a pas fonctionné.
  • Peut-être que les métadonnées de la police étaient corrompues. Copié tous les glyphes dans une nouvelle police et baptisé Bebas Neue: n'a pas fonctionné.
  • J'ai renommé la police de Bebas Neue en BN: Cela fonctionne! Mais pourquoi?
  • Peut-être que vous ne pouvez pas utiliser "Neue" dans un nom de police (puisque Helvetica Neue était la police système iOS jusqu'à iOS 8). La police a été renommée Test Neue: Still works.
  • Peut-être que vous ne pouvez pas utiliser "Bebas" dans un nom de police alors? La police a été renommée Bebas: Fonctionne toujours.
  • Quoi ... Juste pour être sûr, j'ai changé le nom de la police en Bebas Neue: Ne fonctionne plus.
  • J'ai aussi essayé BebasNeue: Aussi n'a pas fonctionné.
  • Puis j'ai changé le nom pour Bebas Neue. Peu importe: Cela fonctionne.

     Bebas Neue Whatever

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.

10
Flitskikker

Son facile et simple maintenant - Testé dans Xcode 10 et Swift 4.2

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.

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

5
Saranjith

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.

 enter image description here

Vous devez corriger la plupart des polices Bebas Neue.

4
János

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!

2
Andrew Van Beek

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.

0
wj2061

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

0
alstr

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

0
Vishal16