J'aimerais qu'une application inclue une police personnalisée pour rendre le texte, la charger, puis l'utiliser avec des UIKit
éléments standard comme UILabel
. Est-ce possible?
ios
cocoa-touch
fonts
Airsource Ltd
la source
la source
Réponses:
iOS 3.2 et versions ultérieures prennent en charge cela. Directement à partir du document Quoi de neuf dans iPhone OS 3.2 :
Une fois les polices définies dans le
Info.plist
, vous pouvez utiliser vos polices personnalisées comme n'importe quelle autre police dans IB ou par programme.Il existe un fil conducteur sur les forums des développeurs Apple:
https://devforums.apple.com/thread/37824 (connexion requise)
Et voici un excellent et simple tutoriel en 3 étapes sur la façon d'y parvenir (lien cassé supprimé)
Info.plist
fichier appeléeUIAppFonts
.UIAppFonts
tableauInfo.plist
[UIFont fontWithName:@"CustomFontName" size:12]
pour obtenir la police personnalisée à utiliser avec vos UILabels et UITextViews , etc.Aussi: Assurez-vous que les polices sont dans vos ressources de bundle de copie.
la source
Modifier: à partir d'iOS 3.2, cette fonctionnalité est intégrée. Si vous devez prendre en charge la version antérieure à 3.2, vous pouvez toujours utiliser cette solution.
J'ai créé un module simple qui étend
UILabel
et gère le chargement des fichiers .ttf. Je l'ai publié opensource sous la licence Apache et l'ai mis sur github ici.Les fichiers importants sont
FontLabel.h
etFontLabel.m
.Il utilise une partie du code de la réponse de Genericrich .
Parcourez la source ici.
OU
Copiez votre fichier de police dans les ressources
Ajoutez une clé à votre
Info.plist
fichier appelée UIAppFonts. ("Polices fournies par l'application)Faire de cette clé un tableau
Pour chaque police dont vous disposez, entrez le nom complet de votre fichier de police (y compris l'extension) en tant qu'éléments du tableau UIAppFonts
sauver
Info.plist
Maintenant, dans votre application, vous pouvez simplement appeler
[UIFont fontWithName:@"CustomFontName" size:15]
pour obtenir la police personnalisée à utiliser avec votreUILabels
etUITextViews
, etc.Pour plus d'informations
la source
Il existe un moyen simple d'utiliser des polices personnalisées dans iOS 4 .
Chalkduster.ttf
) au dossier Ressources du projet dans XCode.info.plist
et ajoutez une nouvelle clé appeléeUIAppFonts
. Le type de cette clé doit être un tableau.Chalkduster.ttf
).[UIFont fontWithName:@"Chalkduster" size:16]
dans votre application.Malheureusement, IB ne permet pas d'initialiser les étiquettes avec des polices personnalisées. Consultez cette question pour résoudre ce problème. Ma solution préférée consiste à utiliser une
UILabel
sous-classe personnalisée :la source
Dans Info.plist, ajoutez l'entrée "Polices fournies par l'application" et incluez les noms de police sous forme de chaînes:
Vérifiez ensuite que votre police est incluse en exécutant:
Notez que le nom de votre fichier ttf peut ne pas être le même que celui que vous utilisez lorsque vous définissez la police de votre étiquette (vous pouvez utiliser le code ci-dessus pour obtenir le paramètre "fontWithName"):
la source
modifier: Cette réponse est obsolète depuis iOS3.2; utiliser UIAppFonts
La seule façon dont j'ai réussi à charger des
UIFont
s personnalisés est via le framework GraphicsServices privé.Les éléments suivants chargeront toutes les
.ttf
polices du bundle principal de l'application:Une fois les polices chargées, elles peuvent être utilisées comme les polices fournies par Apple:
GraphicsServices peut même être chargé au moment de l'exécution au cas où l'API disparaîtrait à l'avenir:
la source
[NSString sizeWithFont:[UIFont fontWithName:@"customFont" size:14]];
renvoie 0 largeur et hauteur pour toutes les polices personnalisées que j'ai essayées.Avec
iOS 8
+ etXcode 6
+, vous pouvez le faire facilement. Voici les étapes:1) Faites glisser et déposez votre police dans le
Xcode
dossier Fichiers de support. N'oubliez pas de marquer votre application dans la section Ajouter aux cibles . À partir de ce moment, vous pouvez utiliser cette policeIB
et la choisir dans la palette de polices.2) Pour rendre cette police disponible dans votre appareil, ouvrez votre
info.plist
et ajoutez laFonts provided by application
clé. Il contiendra la clé de l'élément 0, vous devez ajouter votre nom de police comme valeur. Le nom de la police peut varier du nom de votre fichier de police. Mais d'abord, essayez d'ajouter votre nom de fichier dans la plupart des cas, cela fonctionne.Sinon, cet article m'a toujours aidé.
Voici un extrait rapide du code de cet article pour vous aider à trouver votre nom de police.
ÉDITER
Je tiens à mentionner que vous devez ajouter des fichiers de polices aux phases de construction de votre cible , copier les ressources de l'ensemble . Sans cela, vous ne verrez pas votre police sur l'appareil. Et cela pourrait conduire à un comportement inattendu.
Par exemple, je rencontre une
bug
, quandUITextField
j'ai une police personnalisée, mais cette police n'était pas dans les ressources du bundle de copie . Et quand je me connecte àviewcontroller
cecitextfield
, il y a un délai d'environ 4 secondes avant que laviewDidLoad
fonction soit appelée. La résolution des problèmes de police a supprimé ce délai. Donc, recommandez de le vérifier deux fois. (rdar: // 20028250) Btw, je n'ai pas pu reproduire le bogue, mais je suis sûr que ce problème était lié à la police.la source
J'ai fait ça comme ceci:
Chargez la police:
Maintenant, dans votre
drawRect:
, faites quelque chose comme ceci:Fondamentalement, vous devez faire une boucle de force brute à travers le texte et faire des recherches avec le numéro magique pour trouver votre décalage (ici, voyez-moi en utilisant 29) dans la police, mais cela fonctionne.
De plus, vous devez vous assurer que la police est juridiquement intégrable. La plupart ne le sont pas et il y a des avocats spécialisés dans ce genre de choses, alors soyez prévenu.
la source
CGContextShowTextAtPoint()
- bien que cela ne fonctionne pas avec UTF-8.Oui, vous pouvez inclure des polices personnalisées. Reportez-vous à la documentation sur UIFont, en particulier à la
fontWithName:size:
méthode.1) Assurez-vous d'inclure la police dans votre dossier de ressources.
2) Le "nom" de la police n'est pas nécessairement le nom du fichier.
3) Assurez-vous que vous avez le droit légal d'utiliser cette police. En l'incluant dans votre application, vous le distribuez également et vous devez avoir le droit de le faire.
la source
Si vous utilisez
xcode 4.3
, vous devez ajouterfont
à laBuild Phase
sousCopy Bundle Resources
, selon https://stackoverflow.com/users/1292829/arne dans le fil, des polices personnalisées Xcode 4.3 . Cela a fonctionné pour moi, voici les étapes que j'ai suivies pour que les polices personnalisées fonctionnent dans mon application:OTF
(ouTTF
) fichiers dans un nouveau groupe que j'ai créé et accepté le choix de xcodecopying the files over to the project folder
.UIAppFonts
tableau avec vos polices répertoriées comme éléments dans le tableau. Juste l'names
extension, pas l'extension (par exemple "GothamBold
", "GothamBold-Italic
").project name
chemin en haut de laProject Navigator
partie gauche de l'écran.Build Phases
onglet qui apparaît dans la zone principale de xcode.Copy Bundle Resources
section " " et cliquez sur"+"
pour ajouter la police."+"
.add to the project
.la source
Voici les instructions étape par étape pour le faire. Pas besoin de bibliothèque supplémentaire ou de codage spécial.
http://shang-liang.com/blog/custom-fonts-in-ios4/
La plupart du temps, le problème vient de la police et non de la méthode. La meilleure façon de le faire est d'utiliser une police qui fonctionnera à coup sûr, comme verdana ou geogia. Modifiez ensuite la police souhaitée. Si cela ne fonctionne pas, le nom de la police n'est peut-être pas correct ou la police n'est pas bien formatée.
la source
Il est très facile d'ajouter une nouvelle police sur votre application iOS existante.
Vous avez juste besoin d'ajouter la police par exemple font.ttf dans votre dossier de ressources.
Ouvrez votre application
info.plist
. Ajoutez une nouvelle ligne en tant que "Polices fournies par l'application" et tapez le nom de la police en tant que font.ttf.Et lorsque vous définissez la police, faites comme
setFont:"corresponding Font Name"
Vous pouvez vérifier si votre police est ajoutée ou non par
NSArray *check = [UIFont familyNames];
.Il renvoie toutes les polices prises en charge par votre application.
la source
Je recommanderais de suivre l'un de mes courts tutoriels préférés ici: http://codewithchris.com/common-mistakes-with-adding-custom-fonts-to-your-ios-app/ d'où proviennent ces informations.
Étape 1 - Faites glisser votre .ttf ou .otf du Finder vers votre projet
REMARQUE - Assurez-vous de cocher la case «Ajouter aux cibles» sur la cible de votre application principale
Si vous avez oublié de cliquer pour l'ajouter à votre cible, cliquez sur le fichier de police dans la hiérarchie de votre projet et sur le panneau de droite, cliquez sur la cible principale de l'application dans la section Appartenance à la cible
Pour vous assurer que vos polices font partie de la cible de votre application, assurez-vous qu'elles apparaissent dans vos ressources de bundle de copie dans les phases de construction
Étape 2 - Ajoutez les noms des fichiers de polices à votre Plist
Accédez aux propriétés cibles iOS personnalisées dans votre section d' informations et ajoutez une clé aux éléments de cette section appelée
Fonts provided by application
(vous devriez la voir apparaître comme une option lorsque vous la tapez et elle se configurera comme un tableau. Cliquez sur la petite flèche pour ouvrir les éléments du tableau et saisir les noms des fichiers .ttf ou .otf que vous avez ajoutés pour faire savoir à votre application qu'il s'agit des fichiers de police que vous souhaitez mettre à dispositionREMARQUE - Si votre application se bloque juste après cette étape, vérifiez l'orthographe des éléments que vous ajoutez ici
Étape 3 - Découvrez les noms de vos polices pour pouvoir les appeler
Très souvent, le nom de police vu par votre application est différent de ce que vous pensez qu'il est basé sur le nom de fichier de cette police, mettez-le dans votre code et consultez le journal de votre application pour voir quel nom de police appeler dans votre code
Rapide
Objectif c
Votre journal devrait ressembler à ceci:
Étape 4 - Utilisez votre nouvelle police personnalisée en utilisant le nom de l'étape 3
Rapide
Objectif c
la source
Trouvez le TTF dans le Finder et "Get Info". Sous le titre "Nom complet:" il m'a donné un nom que j'ai ensuite utilisé avec
fontWithName
(je viens de copier et coller le nom exact, dans ce cas, aucune extension '.ttf' n'était nécessaire).la source
Il n'est pas encore sorti, mais la prochaine version de cocos2d (framework de jeu 2d) prendra en charge les polices bitmap de longueur variable comme cartes de caractères.
http://code.google.com/p/cocos2d-iphone/issues/detail?id=317
L'auteur n'a pas de date de sortie précise pour cette version, mais j'ai vu une publication qui indiquait que ce serait dans le mois ou les deux prochains.
la source
Une remarque importante: vous devez utiliser le "nom PostScript" associé à la police, pas son nom complet ou son nom de famille. Ce nom peut souvent être différent du nom normal de la police.
la source
suivez cette étape
1) Copiez votre police dans votre projet
2) ouvrez votre
.plist
fichier en mode code source ... (Remarque - Ne pas ouvririnfo.plist
)3) Avant cela - Faites un clic droit sur votre police et ouvrez-la dans fontforge ou un éditeur similaire et
install
dans votre système, il devrait êtreinstall
4) Tapez ceci
5) Tapez ce code dans votre
class .m
Ici, les lblPoints seront modifiés en fonction de votre
UILabel
Terminé!! Si votre police ne fonctionne toujours pas, vérifiez d'abord la compatibilité de vos polices
la source
info.plist
?Peut-être que l'auteur a oublié de donner à la police un nom Mac FOND ?
Vous pouvez également essayer l'option "Apple" dans la boîte de dialogue d'exportation.
AVERTISSEMENT : je ne suis pas un développeur IPhone!
la source
J'ai essayé les différentes suggestions de cette page sur iOS 3.1.2 et voici mes conclusions:
La simple utilisation
[UIFont fontWithName:size:]
avec les polices du répertoire Resources ne fonctionnera pas, même si le nom FOND est défini à l'aide de FontForge.[UIFont fontWithName:size:]
fonctionnera si les polices sont chargées en premier à l'aide de GSFontAddFromFile. MaisGSFontAddFromFile
ne fait pas partie d'iOS 3.1.2, il doit donc être chargé dynamiquement comme décrit par @rpetrich.la source
Chercher
ATSApplicationFontsPath
Une entrée plist simple qui vous permet d'inclure le (s) fichier (s) de police dans votre dossier de ressources d'application et ils "fonctionnent" simplement dans votre application.
la source
J'ai combiné certains des conseils de cette page en quelque chose qui fonctionne pour moi sur iOS 5.
Tout d'abord, vous devez ajouter la police personnalisée à votre projet. Ensuite, vous devez suivre les conseils de @iPhoneDev et ajouter la police à votre fichier info.plist.
Après cela, cela fonctionne:
Cependant, vous devez connaître le nom Postscript de votre police. Suivez simplement les conseils de @Daniel Wood et appuyez sur commande-i pendant que vous êtes dans FontBook.
Ensuite, profitez de votre police personnalisée.
la source
Ajoutez d'abord la police au format .odt à vos ressources, dans ce cas, nous utiliserons DINEngschriftStd.otf, puis utilisez ce code pour affecter la police à l'étiquette
Pour vous assurer que votre police est chargée sur le projet, appelez simplement
Sur le .plist, vous devez déclarer la police. Ajoutez simplement un enregistrement «Polices fournies par l'application» et ajoutez une chaîne d'élément 0 avec le nom de la police (DINEngschriftStd.otf)
la source
Pour iOS 3.2 et supérieur: utilisez les méthodes fournies par plusieurs ci-dessus, qui sont:
[UIFont fontWithName:@"Real Font Name" size:16]
dans votre application.MAIS Le "vrai nom de police" n'est pas toujours celui que vous voyez dans Fontbook. La meilleure façon est de demander à votre appareil quelles polices il voit et quels sont les noms exacts.
J'utilise le uifont-name-grabber publié sur: uifont-name-grabber
Déposez simplement les polices que vous souhaitez dans le projet xcode, ajoutez le nom du fichier à sa liste et exécutez-le sur le périphérique pour lequel vous construisez, il vous enverra par e-mail une liste complète des polices en utilisant les noms
UIFont fontWithName:
attendus.la source
La meilleure solution consiste à ajouter une nouvelle propriété "
Fonts provided by application
" à votreinfo.plist
fichier.Ensuite, vous pouvez utiliser votre police personnalisée comme d'habitude
UIFont
.la source
Il existe une nouvelle façon d'utiliser des polices personnalisées, à partir d'iOS 4.1. Il vous permet de charger des polices dynamiquement, que ce soit à partir de fichiers inclus avec l'application, de données téléchargées ou de tout ce que vous avez. Il vous permet également de charger des polices selon vos besoins, tandis que l'ancienne méthode les charge toutes au démarrage de l'application, ce qui peut prendre trop de temps si vous avez plusieurs polices.
La nouvelle méthode est décrite sur ios-dynamic-font-loading
Vous utilisez la
CTFontManagerRegisterGraphicsFont
fonction, en lui donnant un tampon avec vos données de police. Il est ensuite disponible pourUIFont
et des vues Web, tout comme avec l'ancienne méthode. Voici l'exemple de code de ce lien:la source
kCTFontManagerErrorAlreadyRegistered
«le fichier a déjà été enregistré dans la portée spécifiée». developer.apple.com/library/ios/#documentation/Carbon/Reference/…Swift, façon codée: (fonctionne également avec swift 2.0)
Ajoutez les polices requises à votre projet (tout comme l'ajout d'images, faites simplement glisser vers Xcode), assurez-vous qu'elles sont ciblées sur votre projet,
ajoutez cette méthode et chargez des polices personnalisées (recommandé dans
appDelegate didFinishLaunchingWithOptions
)Exemple d'utilisation:
Utilisez la police:
la source
Vous pouvez ajouter les fichiers "FONT" requis dans le dossier des ressources. Allez ensuite sur le projet
Info.plist
fichier et utilisez la CLÉ "Polices fournies par l'application" et la valeur "NOM DE LA POLICE".Ensuite, vous pouvez appeler la méthode
[UIFont fontwithName:@"FONT NAME" size:12];
la source
J'ai rendu tout possible mais les nouvelles polices n'apparaissent pas alors j'ai trouvé la solution:
Lorsque vous faites glisser les fichiers fot (otf ou ttf), n'oubliez pas de cocher la case sous "Ajouter aux cibles".
Après cela, votre police apparaîtra et tout fonctionnera bien.
la source
Bien que certaines des réponses ci-dessus soient correctes, j'ai écrit un didacticiel visuel détaillé pour les personnes ayant encore des problèmes avec les polices.
Les solutions ci-dessus qui vous indiquent d'ajouter la police à la liste et d'utiliser
sont les bons. Veuillez maintenant utiliser toute autre méthode de piratage. Si vous rencontrez toujours des problèmes pour trouver et ajouter des noms de police, voici le didacticiel -
Utilisation de polices personnalisées dans l'application iOS
la source
oui, vous pouvez utiliser une police personnalisée dans votre application
étape par étape qui suit:
Ajoutez vos fichiers de polices personnalisés dans votre projet dans les fichiers de prise en charge
Ajoutez une clé à votre fichier Info.plist appelée UIAppFonts.
Faire de cette clé un tableau
Pour chaque police dont vous disposez, entrez le nom complet de votre fichier de police (y compris l'extension) en tant qu'éléments du tableau UIAppFonts
Save Info.plist Maintenant dans votre application, vous pouvez simplement appeler [UIFont fontWithName: @ "votre nom de police personnalisé" taille: 20] pour obtenir la police personnalisée à utiliser avec vos UILabels après avoir appliqué ceci si vous n'obtenez pas la police correcte, puis vous double-cliquez sur la police personnalisée, et voyez attentivement le nom de la police du haut est en cours et copiez cette police, collez-la ici [UIFont fontWithName: @ "ici après votre nom de police personnalisé" taille: 20]
j'espère que vous obtiendrez la bonne réponse
la source
oui, vous pouvez utiliser une police personnalisée dans votre application
étape par étape qui suit:
Info.plist
fichier appelée UIAppFonts.Info.plist
maintenant dans votre application, vous pouvez simplement appeler[UIFont fontWithName:@"your Custom font Name" size:20]
pour obtenir la police personnalisée à utiliser avec votreUILabels
après avoir appliqué ceci si vous n'obtenez pas la police correcte, vous double-cliquez sur la police personnalisée et voyez attentivement le nom de la police du haut est en train de venir et copiez cette police, collez, ici
[UIFont fontWithName:@" here past your Custom font Name" size:20]
j'espère que vous obtiendrez la bonne réponsela source