55 votes

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

J'essaie d'utiliser une police personnalisée (Bebas Neue) dans mon application iOS. Les étapes que j'ai suivies 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 'Fonts provided by application' dans plist.
  4. Dans les phases de construction, les fichiers .otf se trouvent dans "Copy Bundle Resources".
  5. Installer la police sur mon Mac.
  6. J'essaie d'imprimer toutes les polices disponibles mais je ne vois pas 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. J'ai essayé 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. Avez-vous une idée ?

Captures d'écran :

Font Font-List

0 votes

Il existe un moyen simple de vérifier si votre police personnalisée est disponible pour votre projet. il suffit de placer un UILabel dans votre tableau principal. Sélectionnez l'étiquette et allez dans le gestionnaire de polices, sélectionnez "custom" et vérifiez si votre police personnalisée est listée dans la liste des polices. si votre police personnalisée est listée dans la liste, alors la police est disponible pour votre projet. si ce n'est pas le cas, il y a un problème avec l'importation de la police. je vous recommande d'importer quelques polices supplémentaires dans votre projet (otf et ttf) et de voir si cela fonctionne.....

0 votes

Si vous avez toujours un problème, postez une capture d'écran de votre plist. Il est fort probable que votre plist soit en cause...

0 votes

Merci pour votre réponse. J'ai essayé de placer un UILabel et de sélectionner custom dans la police, mais je ne trouve pas ma police personnalisée. J'ai essayé d'utiliser une autre police et je peux voir l'autre police dans le constructeur d'interface. Peut-être y a-t-il un problème avec cette police (Bebas Neue) ?

64voto

Joe Points 5340

Essayez les étapes suivantes : Code testé dans Swift 3 .

Étape 1 : Ajouter votre police personnalisée dans votre projet( Assurez-vous que Ajouter à la cible J'utilise la police "PermanentMarker.ttf", "Pecita.otf" et "AROLY.ttf" comme police de test.

Note : Police de soutien Type ttf et otf (Les deux types de polices devraient fonctionner)

Étape 2 : Modifier le fichier application-info.plist. Ajoutez la clé "Fonts provided by application" dans une nouvelle ligne et ajoutez "PermanentMarker.ttf" comme nouvel élément dans le tableau " Polices fournies par l'application ".

Votre plist devrait ressembler à ceci

enter image description here

La police sera désormais disponible dans Interface Builder. Pour utiliser la police personnalisée dans le code, nous devons y faire référence par son nom, mais ce 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 dans le Storyboard comme ci-dessous.

Mise à jour 2 : Working Solution

Après avoir importé votre police personnalisée et mis à jour votre plist .sélectionner label de votre storyBoard ,goto Attributes Inspector sous Label > Text type > sélectionnez pour Attributed et choisissez votre custom font de 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 la liste Xcode font list Vérifiez le lien correspondant à votre problème

Note : Néanmoins, vous pouvez assigner BebasNeue ou custom font à votre étiquette ou à votre bouton, etc., même s'il ne s'affiche pas dans votre programme. interface Builder Si vous avez des difficultés à définir la police de votre objet par programme, essayez la méthode ci-dessous.

Affecter une police à UILabel :

    label?.font = UIFont(name: "BebasNeue", size: 35) // Set to any size

Attribue une police à UIButton :

    button.titleLabel?.font = UIFont(name: "BebasNeue", size: 35)

Affecte une police à UITextField :

    textField.font = UIFont(name: "BebasNeue", size: 25) 

Affecte une police à UINavigationBar :

    navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: UIFont(name: "BebasNeue", size: 25)!, NSForegroundColorAttributeName: UIColor.red]

Affecte une police à UIToolBar :

    UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: UIFont(name: "BebasNeue", size: 25.0)!], for: UIControlState.normal)

Sortie :

enter image description here

0 votes

Merci pour votre réponse, pouvez-vous tester en utilisant BebasNeue ? Parce que je peux le faire fonctionner dans le constructeur d'interface avec d'autres polices mais pas avec celle-ci.

0 votes

La solution de la mise à jour 2 fonctionne enfin pour moi ! Merci Joe !

1 votes

J'ai le même problème. La police BebasNeue ne prend en charge que l'affichage du texte des attributs.

20voto

Saranjith Points 4137

C'est facile et simple maintenant- Testé dans Xcode 10 et swift 5

Étapes pour ajouter une police à votre Xcode

Sélectionnez votre UILabel, UITextField ou autre puis, dans la section des polices, suivez les instructions suivantes

Étape 1

Sélectionnez le menu des paramètres dans le coin gauche de l'écran de sélection des polices. Et choisissez l'option de gestion des polices.

enter image description here

Étape 2

Cliquez sur le bouton d'ajout comme indiqué ci-dessous.

enter image description here

Étape 3

Sélectionnez le dossier qui contient votre police. Elle sera chargée dans la liste des polices de XCode.

Étapes à suivre pour ajouter des polices à votre projet

N'oubliez pas d'ajouter la description à votre plist avec la clé Fonts provided by application et mettez les fichiers de police dans les ressources du paquet de copie sous les paramètres cibles du projet.

Oui ! C'est ça Profitez-en

1 votes

OUI, c'est le chemin. J'ai pu inclure et utiliser la police dans le projet, mais la police n'apparaissait pas dans le constructeur d'interface. Il s'avère que xcode lit la liste des polices depuis le système, ce qui est logique. NOTE : pour tous ceux qui rencontrent ce problème, n'oubliez pas d'inclure la police correctement dans vos projets, sinon elle ne fonctionnera pas sur les ordinateurs qui n'ont pas cette police installée.

0 votes

J'ai résolu le problème en ouvrant l'application Livre des polices, puis en supprimant les polices de la section "Utilisateur", et enfin en faisant glisser les fichiers de polices vers la section "Ordinateur" (cela a nécessité de redémarrer Xcode).

1 votes

Et que se passe-t-il lorsque le projet est installé sur un autre mac, où ces polices personnalisées ne sont pas installées ?

16voto

Flitskikker Points 264

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 Plain contrôles.

C'est le cas pour Attributed comme décrit dans la mise à jour 2 de l'article de Joes, mais alors vous modifiez réellement les contrôles de l attributedText au lieu de l'habituel text ce qui peut entraîner un comportement indésirable. Par exemple, vous devrez modifier les paramètres suivants NSMutableAttributedString pour modifier le texte ou la couleur du texte au moment de 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 .

  • Le fichier de police a peut-être été corrompu. Réenregistrement en .otf et .ttf : Ça n'a pas marché.
  • Peut-être que les méta-données de la police ont été corrompues. J'ai copié tous les glyphes dans une nouvelle police et l'ai nommée Bebas Neue : Ça n'a pas marché.
  • J'ai renommé la police de Bebas Neue en BN : Ça marche ! Mais pourquoi ?
  • On ne peut peut-être pas utiliser "Neue" dans le nom d'une police (puisque Helvetica Neue était la police système d'iOS jusqu'à iOS 8). J'ai renommé la police en Test Neue : Ça marche toujours.
  • Peut-être que vous ne pouvez pas utiliser "Bebas" dans un nom de police alors ? J'ai renommé la police en Bebas : Ça marche toujours.
  • Quoi... Juste pour être sûr, j'ai changé le nom de la police en Bebas Neue : Ça ne marche plus.
  • J'ai aussi essayé BebasNeue : Ça n'a pas marché non plus.
  • 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'avais installé le Bebas Neue normal. Peut-être que la référence a été corrompue ? Je ne peux vraiment pas le dire. Peut-être que quelqu'un sur un système propre peut essayer si Bebas Neue fonctionne dans son 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 Plain des étiquettes et des boutons stylisés, ce qui me permet de concevoir mon application telle quelle sans avoir à bidouiller des chaînes attribuées.

2 votes

Même solution pour moi. On dirait que Xcode n'aime pas le nom de la police jusqu'à ce que je change les métadonnées FullName.

3 votes

Comment changez-vous le nom ? J'ai le même problème avec cette police particulière.

5 votes

Puisque Bebas Neue est sous licence SIL Open Font License qui permet une redistribution gratuite, j'ai téléchargé une version prérenommée que vous pouvez télécharger ici : ge.tt/14SV3fj2 Bonne chance !

9voto

János Points 1512

Finalement, j'ai trouvé le Cause profonde de problèmes avec les polices Bebas Neue.

Je ne me souviens plus où j'ai téléchargé les polices, mais Polices Bebas Neue sont incohérent .

Télécharger c'est-à-dire une application appelée Typelight

Ouvrir non régulier mais c'est-à-dire Gras police avec Typelight .

enter image description here

Vous devez corriger la plupart des Bebas Neue les polices de caractères.

0 votes

J'ai perdu beaucoup de temps pour cela, merci de le poster :) Je ne pensais pas que la police elle-même pouvait être un problème.

2 votes

Merci, ça m'a aidé ! En fait, j'ai remarqué que le fait d'avoir le mot " Neue "Il a donc suffi de renommer le nom de famille en "Bebas".

0 votes

Je peux confirmer que renommer la police en Bebas est suffisant.

2voto

Andrew Van Beek Points 21

Vous pouvez en fait aller dans les polices attribuées, cliquer sur la fenêtre des polices personnalisées. Cliquez ensuite sur l'engrenage en haut à gauche et cliquez sur l'option "gérer les polices". Une fenêtre devrait s'ouvrir et en haut, 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, comme xyz.tff, et elle devrait être ajoutée.

Il est important de noter que le fichier ttf doit être référencé dans la p-list ainsi que dans le répertoire de votre projet !

0 votes

En fait, pas loin. La police peut être installée dans l'application, mais pas sur votre système. Pour moi, l'installation des polices dans le Livre des polices d'Apple a corrigé le problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X