Dans mon info.plist, j'ai ajouté une clé "Polices fournies par l'application" et ajouté EdwardianScriptITCStd.otf
Mais, lorsque j'essaie d'obtenir cette police, le résultat est nul:
NSLog(@"%@", [UIFont fontWithName:@"EdwardianScriptITCStd"
size:16.0f]);
J'ai imprimé les familles de polices en utilisant [UIFont familyNames]
et ce n'est pas là non plus:
(
Thonburi,
"Snell Roundhand",
"Academy Engraved LET",
"Marker Felt",
"Geeza Pro",
"Arial Rounded MT Bold",
"Trebuchet MS",
Arial,
Marion,
"Gurmukhi MN",
"Malayalam Sangam MN",
"Bradley Hand",
"Kannada Sangam MN",
"Bodoni 72 Oldstyle",
Cochin,
"Sinhala Sangam MN",
"Hiragino Kaku Gothic ProN",
Papyrus,
Verdana,
"Zapf Dingbats",
Courier,
"Hoefler Text",
"Euphemia UCAS",
Helvetica,
"Hiragino Mincho ProN",
"Bodoni Ornaments",
"Apple Color Emoji",
Optima,
"Gujarati Sangam MN",
"Devanagari Sangam MN",
"Times New Roman",
Kailasa,
"Telugu Sangam MN",
"Heiti SC",
"Apple SD Gothic Neo",
Futura,
"Bodoni 72",
Baskerville,
"Chalkboard SE",
"Heiti TC",
Copperplate,
"Party LET",
"American Typewriter",
"Bangla Sangam MN",
Noteworthy,
Zapfino,
"Tamil Sangam MN",
"DB LCD Temp",
"Arial Hebrew",
Chalkduster,
Georgia,
"Helvetica Neue",
"Gill Sans",
Palatino,
"Courier New",
"Oriya Sangam MN",
Didot,
"Bodoni 72 Smallcaps"
)
Qu'est-ce qui me manque? Merci!
Mes commentaires commençaient à être longs, alors j'ai décidé de soumettre une réponse à la place :)
Les polices personnalisées ne sont prises en charge que dans iOS 3.2 et versions ultérieures. Assurez-vous donc que votre paramètre de génération Cible de déploiement ne retourne pas plus loin que la version 3.2.
Vérifiez que la police est incluse dans votre cible de construction (dans la phase de construction "Copier les ressources de l'ensemble")
Vérifiez la valeur brute de la clé pour "Polices fournies par l'application" afin de vous assurer qu'elle est correcte. Lorsque vous visualisez le * .plist dans Xcode, cliquez avec le bouton droit de la souris et choisissez "Afficher les clés/valeurs brutes", puis vérifiez que la clé est UIAppFonts
.
Je pense qu'iOS requiert le nom PostScript d'une police lors de l'utilisation de fontWithName: size:
, que vous pouvez trouver/vérifier en ouvrant la police dans le livre de polices d'Apple et en tapant command+I
.
À un moment donné, l'utilisation de polices personnalisées et de UILabel
posait un problème. Je ne suis pas sûr si ce problème existe toujours. La solution consistait à sous-classe UILabel
et à y définir la police.
Si cela ne fonctionne toujours pas, ce fil Stack Overflow sur des polices personnalisées a pas mal d'informations, vous aurez peut-être de la chance.
EDIT
Rien ne garantit que j'ai le même fichier de police que vous, mais sur ma machine, le nom PostScript est "EdwardianScriptITC".
Si votre nom de police inclut le caractère '-', remplacez-le par un espace. Par exemple, Arial-Bold.ttf est utilisé comme [UIFont fontWithName: "Arial Bold" taille: 10];
j'avais le même problème. vous pouvez définir la police sur une étiquette à partir du constructeur d’interface du storyboard. puis obtenez cette police en mode débogage à partir de label comme:
let cfnt = txtUsernameField.font
puis cliquez sur le bouton i dans la petite fenêtre de débogage et le nom de famille de la police sera écrit dans la fenêtre de la console. et vous pouvez l'utiliser comme ça:
txtUsernameField.font = UIFont(name: "MyriadPro-CondIt", size: 14)
J'ai eu ce problème bien que je me suis juré d'avoir des polices personnalisées qui fonctionnaient très bien auparavant.
Il s'avère que je devais juste exécuter "Nettoyer" sur mon projet dans le projet XCode afin qu'il puisse rétablir les références.
Le nom de police à utiliser semble être le "Nom de famille" dans le livre de polices. J'ai essayé le nom PostScript, mais cela ne fonctionne pas toujours. Autant que je sache, le nom de famille a toujours fonctionné jusqu'à maintenant.
Vous pouvez vérifier ces informations, comme indiqué dans la réponse ci-dessus, dans Font Book, sélectionnez la police et appuyez sur cmd + i.
J'espère que cela t'aides...
Le problème que j'ai rencontré est que certaines des polices de la famille de polices sont retournées correctement tandis que d'autres sont retournées nil
.
Par exemple:
MuseoSansRounded-500
valideMuseoSansRounded-900
nulIl s'est avéré que Xcode incluait automatiquement les polices personnalisées utilisées dans Interface Builder. J'avais utilisé la police de poids 500 en IB mais pas celle de 900.
Ces deux étapes l'ont corrigé pour moi:
Dans les paramètres de construction, recherchez et désactivez Auto-Activate Custom Fonts
. Il y avait deux exemples de cela dans mon projet.
Au lancement de l'application, enregistrez manuellement les polices personnalisées auprès du système. J'ai utilisé l'extrait de cette SO réponse: https://stackoverflow.com/a/32600784/131378
Au nom de l’exhaustivité, j’aurais pu laisser Auto-Activate Custom Fonts
activé, puis ignorer l’inscription de ces polices dans le code. Cependant, je ne voulais pas mettre à jour le code pendant le développement si je finissais par utiliser une nouvelle police dans IB préalablement enregistrée manuellement. Xcode se plaint si vous enregistrez une police déjà activée automatiquement.