Cette question concerne iOS pré-3.2. Depuis la version 3.2, cette fonctionnalité est facilement réalisable à l'aide de la réponse de samvermette ci-dessous, et j'ai modifié la réponse acceptée (de commande en samvermette) pour refléter cette réponse. Je ne peux pas donner crédit aux deux réponses (à part les votes positifs) mais elles sont bonnes.
J'aimerais qu'une application inclue une police personnalisée pour le rendu du texte, la charge, puis utilise-la avec des éléments UIKit
standard tels que UILabel
. Est-ce possible?
J'ai trouvé les liens ci-dessous:
mais cela nécessiterait que je rende chaque glyphe moi-même, ce qui est un peu trop comme un travail difficile, en particulier pour un texte multiligne.
J'ai également trouvé des articles qui disent tout de suite que ce n'est pas possible, mais sans justification, alors je cherche une réponse définitive.
EDIT - échec de l'expérience -[UIFont fontWithName:size:]
J'ai téléchargé Harrowprint.tff (téléchargé à partir de ici ) et l'a ajouté à mon répertoire Ressources et au projet. J'ai ensuite essayé ce code:
UIFont* font = [UIFont fontWithName:@"Harrowprint" size:20];
ce qui a entraîné une exception. L'examen du fichier TTF dans le Finder a confirmé que le nom de la police était Harrowprint.
EDIT - un certain nombre de réponses m'indiquent jusqu'à présent de lire la documentation sur X ou Y. J'ai beaucoup expérimenté avec tout cela et je n'ai abouti à rien. Dans un cas, X s’est avéré pertinent uniquement sous OS X, pas sur iPhone. Par conséquent, je mets une prime pour cette question et je l’attribuerai à la première personne qui fournit une réponse (en utilisant uniquement des API documentées) qui répond avec suffisamment d’informations pour que cela fonctionne avec le périphérique. Travailler sur le simulateur serait également un bonus.
EDIT - Il semble que la prime soit automatiquement attribuée à la réponse ayant recueilli le plus grand nombre de votes. Intéressant. Personne n’a réellement répondu à la question posée - la solution qui consiste à coder votre propre sous-classe UILabel
ne prend pas en charge Word-wrap, qui est une fonctionnalité essentielle pour moi - bien que je puisse l’étendre pour le faire.
iOS 3.2 et versions ultérieures supportent cela. Directement à partir du Nouveautés de l'iPhone OS 3.2 doc:
Prise en charge des polices personnalisées
Les applications souhaitant utiliser des polices personnalisées peuvent désormais les inclure dans leur lot d'applications et les enregistrer auprès du système en incluant la clé UIAppFonts dans leur fichier Info.plist. La valeur de cette clé est un tableau de chaînes identifiant les fichiers de polices de l’ensemble de l’application. Lorsque le système voit la clé, il charge les polices spécifiées et les met à la disposition de l'application.
Une fois que les polices ont été définies dans le Info.plist
, vous pouvez utiliser vos polices personnalisées comme n'importe quelle autre police de IB ou par programme.
Un fil de discussion est en cours sur les forums de développement Apple:
https://devforums.Apple.com/thread/37824 (connexion requise)
Et voici un excellent et simple tutoriel en 3 étapes sur la façon de réaliser ceci (lien brisé enlevé)
Info.plist
appelée UIAppFonts
.UIAppFonts
.Info.plist
[UIFont fontWithName:@"CustomFontName" size:12]
pour obtenir la police personnalisée à utiliser avec vos balises UILabels et UITextViews, etc.Aussi: Assurez-vous que les polices sont dans vos ressources de copie de l'ensemble.
Edit: à partir de iOS 3.2, cette fonctionnalité est intégrée. Si vous devez prendre en charge les versions antérieures à 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 licence Apache et je l'ai mis sur github Here.
Les fichiers importants sont FontLabel.h
et FontLabel.m
.
Il utilise une partie du code de La réponse de Genericrich .
Parcourir la source Ici.
OR
Copiez votre fichier de police dans les ressources
Ajoutez une clé à votre fichier Info.plist
appelée UIAppFonts. ("Polices fournies par l'application)
Faire de cette clé un tableau
Pour chaque police que vous avez, entrez le nom complet de votre fichier de police (y compris l'extension) en tant qu'éléments du tableau UIAppFonts.
Enregistrer Info.plist
Désormais, dans votre application, vous pouvez simplement appeler [UIFont fontWithName:@"CustomFontName" size:15]
pour obtenir la police personnalisée à utiliser avec vos UILabels
et UITextViews
, etc.
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ée UIAppFonts
. Le type de cette clé doit être un tableau.Chalkduster.ttf
).[UIFont fontWithName:@"Chalkduster" size:16]
dans votre application.Malheureusement, IB n'autorise pas l'initialisation des étiquettes avec des polices personnalisées. Voir cette question pour résoudre ce problème. Ma solution préférée consiste à utiliser la sous-classe UILabel
personnalisée:
@implementation CustomFontLabel
- (id)initWithCoder:(NSCoder *)decoder
{
if (self = [super initWithCoder: decoder])
{
[self setFont: [UIFont fontWithName: @"Chalkduster" size: self.font.pointSize]];
}
return self;
}
@end
Dans Info.plist, ajoutez l'entrée "Polices fournies par l'application" et incluez les noms de police sous forme de chaînes:
Fonts provided by application
Item 0 myfontname.ttf
Item 1 myfontname-bold.ttf
...
Ensuite, vérifiez que votre police est incluse en exécutant:
for (NSString *familyName in [UIFont familyNames]) {
for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) {
NSLog(@"%@", fontName);
}
}
Notez que votre nom de fichier ttf peut ne pas être identique à celui que vous utilisez lorsque vous définissez la police pour votre étiquette (vous pouvez utiliser le code ci-dessus pour obtenir le paramètre "fontWithName"):
[label setFont:[UIFont fontWithName:@"MyFontName-Regular" size:18]];
edit: Cette réponse est caduque à partir de iOS3.2; utiliser UIAppFonts
Le seul moyen pour charger UIFont
s personnalisé est de passer par la structure privée GraphicsServices.
Les éléments suivants chargeront toutes les polices .ttf
dans le lot principal de l'application:
BOOL GSFontAddFromFile(const char * path);
NSUInteger loadFonts()
{
NSUInteger newFontCount = 0;
for (NSString *fontFile in [[NSBundle mainBundle] pathsForResourcesOfType:@"ttf" inDirectory:nil])
newFontCount += GSFontAddFromFile([fontFile UTF8String]);
return newFontCount;
}
Une fois les polices chargées, vous pouvez les utiliser comme les polices fournies par Apple:
NSLog(@"Available Font Families: %@", [UIFont familyNames]);
[label setFont:[UIFont fontWithName:@"Consolas" size:20.0f]];
GraphicsServices peut même être chargé à l'exécution au cas où l'API disparaîtrait à l'avenir:
#import <dlfcn.h>
NSUInteger loadFonts()
{
NSUInteger newFontCount = 0;
NSBundle *frameworkBundle = [NSBundle bundleWithIdentifier:@"com.Apple.GraphicsServices"];
const char *frameworkPath = [[frameworkBundle executablePath] UTF8String];
if (frameworkPath) {
void *graphicsServices = dlopen(frameworkPath, RTLD_NOLOAD | RTLD_LAZY);
if (graphicsServices) {
BOOL (*GSFontAddFromFile)(const char *) = dlsym(graphicsServices, "GSFontAddFromFile");
if (GSFontAddFromFile)
for (NSString *fontFile in [[NSBundle mainBundle] pathsForResourcesOfType:@"ttf" inDirectory:nil])
newFontCount += GSFontAddFromFile([fontFile UTF8String]);
}
}
return newFontCount;
}
Avec iOS 8
+ et Xcode 6
+, vous pouvez le faire facilement. Voici les étapes:
1) Faites glisser votre police dans le dossier Xcode
Supporting Files. N'oubliez pas de marquer votre application dans la section Ajouter aux cibles. À partir de ce moment, vous pouvez utiliser cette police dans IB
et la choisir dans la palette des polices.
2) Pour que cette police soit disponible sur votre appareil, ouvrez votre info.plist
et ajoutez la clé Fonts provided by application
. 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 de votre nom de 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 l'extrait Swift du code de cet article pour vous aider à trouver le nom de votre police.
func allFonts(){
for family in UIFont.familyNames(){
println(family)
for name in UIFont.fontNamesForFamilyName(family.description)
{
println(" \(name)")
}
}
}
Je tiens à mentionner que vous devez ajouter des fichiers de polices aux phases de construction de votre cible Target, Copy Bundle Resources. Sans cela, vous ne verrez pas votre police sur l'appareil. Et cela pourrait conduire à un comportement inattendu.
Par exemple, je rencontre une bug
, lorsque UITextField
a une police personnalisée, mais cette police ne figurait pas dans Copy Bundle Resources. Et quand je passe à la viewcontroller
avec cette textfield
, il y a un délai d'environ 4 secondes avant que la fonction viewDidLoad
ne soit appelée. La résolution des problèmes de polices a supprimé ce délai. Donc, recommande de vérifier deux fois. (rdar: // 20028250) Au fait, je n'ai pas pu reproduire le bogue, mais je suis sûr que le problème était dû à la police.
J'ai fait ça comme ça:
Chargez la police:
- (void)loadFont{
// Get the path to our custom font and create a data provider.
NSString *fontPath = [[NSBundle mainBundle] pathForResource:@"mycustomfont" ofType:@"ttf"];
CGDataProviderRef fontDataProvider = CGDataProviderCreateWithFilename([fontPath UTF8String]);
// Create the font with the data provider, then release the data provider.
customFont = CGFontCreateWithDataProvider(fontDataProvider);
CGDataProviderRelease(fontDataProvider);
}
Maintenant, dans votre drawRect:
, faites quelque chose comme ceci:
-(void)drawRect:(CGRect)rect{
[super drawRect:rect];
// Get the context.
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClearRect(context, rect);
// Set the customFont to be the font used to draw.
CGContextSetFont(context, customFont);
// Set how the context draws the font, what color, how big.
CGContextSetTextDrawingMode(context, kCGTextFillStroke);
CGContextSetFillColorWithColor(context, self.fontColor.CGColor);
UIColor * strokeColor = [UIColor blackColor];
CGContextSetStrokeColorWithColor(context, strokeColor.CGColor);
CGContextSetFontSize(context, 48.0f);
// Create an array of Glyph's the size of text that will be drawn.
CGGlyph textToPrint[[self.theText length]];
// Loop through the entire length of the text.
for (int i = 0; i < [self.theText length]; ++i) {
// Store each letter in a Glyph and subtract the MagicNumber to get appropriate value.
textToPrint[i] = [[self.theText uppercaseString] characterAtIndex:i] + 3 - 32;
}
CGAffineTransform textTransform = CGAffineTransformMake(1.0, 0.0, 0.0, -1.0, 0.0, 0.0);
CGContextSetTextMatrix(context, textTransform);
CGContextShowGlyphsAtPoint(context, 20, 50, textToPrint, [self.theText length]);
}
Fondamentalement, vous devez utiliser une force brute pour parcourir le texte et utiliser le nombre magique pour trouver votre décalage (ici, voyez-moi au 29) dans la police, mais cela fonctionne.
En outre, vous devez vous assurer que la police est légalement incorporable. La plupart ne le sont pas et il y a des avocats spécialisés dans ce genre de choses, alors soyez prévenus.
Si vous utilisez xcode 4.3
, vous devez ajouter font
à Build Phase
sous Copy Bundle Resources
, conformément à https://stackoverflow.com/users/1292829/arne dans le fil, 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
(ou TTF
) vers un nouveau groupe que j'ai créé et accepté le choix de xcode de copying the files over to the project folder
.UIAppFonts
avec vos polices répertoriées en tant qu'éléments dans le tableau. Juste la names
, pas l’extension (par exemple "GothamBold
", "GothamBold-Italic
").project name
en haut du Project Navigator
du côté gauche de l'écran.Build Phases
qui apparaît dans la zone principale de xcode.Copy Bundle Resources
" et cliquez sur "+"
pour ajouter la police."+"
.add to the project
.Oui, vous pouvez inclure des polices personnalisées. Reportez-vous à la documentation sur UIFont, plus précisément à la méthode fontWithName:size:
.
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 d’avoir 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.
Il est très facile d'ajouter une nouvelle police sur votre application iOS existante.
Vous devez simplement 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 sous le nom 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.
Voici les instructions étape par étape pour le faire. Pas besoin de bibliothèque supplémentaire ni de codage spécial.
http://shang-liang.com/blog/custom-fonts-in-ios4/
La plupart du temps, le problème concerne la police et non la méthode. La meilleure façon de le faire est d’utiliser une police qui, comme Verdana ou Geogia, fonctionnera. Puis changez pour 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.
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 fichier .ttf ou .otf du Finder dans 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 sur pour l'ajouter à votre cible, cliquez sur le fichier de police dans la hiérarchie de votre projet et, dans le volet de droite, cliquez sur la cible principale de l'application dans la section Adhésion cible.
Pour vous assurer que vos polices font partie de votre cible d'application, assurez-vous qu'elles apparaissent dans votre Copier les ressources d'un ensemble dans Construire des phases
Étape 2 - Ajoutez les noms de fichier de police à votre Plist
Accédez à la Propriétés de la cible iOS personnalisée de votre section Info 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 cliquez sur la petite flèche pour ouvrir les éléments du tableau et tapez les noms des fichiers .ttf ou .otf que vous avez ajoutés pour indiquer à votre application que ces fichiers sont les fichiers de polices que vous souhaitez utiliser.
_ {NOTE - Si votre application se bloque juste après cette étape, vérifiez l'orthographe des éléments que vous ajoutez ici} _
Étape 3 - Trouvez le nom 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 basé sur le nom de fichier de cette police, insérez-le dans votre code et examinez le journal créé par votre application pour voir quel nom de police appeler dans votre code.
Rapide
for family: String in UIFont.familyNames(){
print("\(family)")
for names: String in UIFont.fontNamesForFamilyName(family){
print("== \(names)")
}
}
Objectif c
for (NSString* family in [UIFont familyNames]){
NSLog(@"%@", family);
for (NSString* name in [UIFont fontNamesForFamilyName: family]){
NSLog(@" %@", name);
}
}
Votre journal devrait ressembler à ceci:
Étape 4 - Utilisez votre nouvelle police personnalisée en utilisant le nom de l'étape 3
Rapide
label.font = UIFont(name: "SourceSansPro-Regular", size: 18)
Objectif c
label.font = [UIFont fontWithName:@"SourceSansPro-Regular" size:18];
Trouvez le fichier TTF dans le Finder et "Obtenir des informations". Sous la rubrique "Nom complet", cela 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).
Remarque importante: vous devez utiliser le "nom PostScript" associé à la police, et non son nom complet ou son nom de famille. Ce nom peut souvent être différent du nom normal de la police.
Ce n'est pas encore sorti, mais la prochaine version de cocos2d (2d game framework) supportera les polices bitmap de longueur variable en tant que 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 un message indiquant qu’elle le serait dans un ou deux mois.
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.
DISCLAIMER: Je ne suis pas un développeur IPhone!
suivez cette étape
1) Copiez votre police dans votre projet
2) ouvrez votre fichier .plist
en mode code source ... (Remarque: ne pas ouvrir info.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. Elle devrait être install
4) Tapez ceci
<key>UIAppFonts</key>
<array>
<string>MyriadPro.otf</string>
</array>
5) Tapez ce code dans votre class .m
[lblPoints setFont:[UIFont fontWithName:@"Myriad Pro" size:15.0]];
Ici, les points seront changés à compter de votre UILabel
Fait !! Si votre police ne fonctionne toujours pas, vérifiez d'abord sa compatibilité.
J'ai essayé les différentes suggestions de cette page sur iOS 3.1.2 et voici mes conclusions:
Utiliser simplement [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. Mais GSFontAddFromFile
ne fait pas partie d'iOS 3.1.2 et doit donc être chargé dynamiquement comme décrit par @rpetrich.
J'ai combiné certains des conseils de cette page en un outil 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:
UIFont *yourCustomFont = [UIFont fontWithName:@"YOUR-CUSTOM-FONT-POSTSCRIPT-NAME" size:14.0];
[yourUILabel setFont:yourCustomFont];
Cependant, vous devez connaître le nom PostScript de votre police. Suivez simplement les conseils de @Daniel Wood et appuyez sur command-i pendant que vous êtes sur FontBook.
Ensuite, profitez de votre police personnalisée.
Ajoutez d’abord la police au format .odt à vos ressources. Dans ce cas, nous utiliserons DINEngschriftStd.otf, puis nous utiliserons ce code pour attribuer la police à l’étiquette.
[theUILabel setFont:[UIFont fontWithName:@"DINEngschriftStd" size:21]];
Pour vous assurer que votre police est chargée dans le projet, appelez simplement
NSLog(@"Available Font Families: %@", [UIFont familyNames]);
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)
Pour iOS 3.2 et versions ultérieures: Utilisez les méthodes fournies par plusieurs méthodes ci-dessus, à savoir:
[UIFont fontWithName:@"Real Font Name" size:16]
dans votre application.MAIS Le "Nom de police réel" n'est pas toujours celui que vous voyez dans Fontbook. Le meilleur moyen est de demander à votre appareil quelles polices il voit et quels sont les noms exacts.
J'utilise uifont-name-grabber posté à l'adresse: uifont-name-grabber
Déposez simplement les polices de votre choix dans le projet xcode, ajoutez le nom du fichier à sa pliste et exécutez-le sur le périphérique pour lequel vous créez, il vous enverra une liste complète des polices en utilisant les noms que UIFont fontWithName:
attend.
Une meilleure solution consiste à ajouter une nouvelle propriété "Fonts provided by application
" à votre fichier info.plist
.
Ensuite, vous pouvez utiliser votre police personnalisée comme suit UIFont
.
Regarde ATSApplicationFontsPath
Une simple entrée de pliste qui vous permet d'inclure le (s) fichier (s) de police dans le dossier de ressources de votre application et qu'ils "fonctionnent" dans votre application.
Il existe une nouvelle façon d'utiliser les polices personnalisées, à partir de iOS 4.1. Il vous permet de charger des polices de manière dynamique, à partir de fichiers inclus avec l'application, de données téléchargées ou de ce que vous avez. Il vous permet également de charger les 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 à ios-dynamic-font-loading
Vous utilisez la fonction CTFontManagerRegisterGraphicsFont
, en lui donnant une mémoire tampon avec vos données de police. Il est alors disponible pour UIFont
et les vues Web, comme avec l'ancienne méthode. Voici l'exemple de code de ce lien:
NSData *inData = /* your font-file data */;
CFErrorRef error;
CGDataProviderRef provider = CGDataProviderCreateWithCFData((CFDataRef)inData);
CGFontRef font = CGFontCreateWithDataProvider(provider);
if (! CTFontManagerRegisterGraphicsFont(font, &error)) {
CFStringRef errorDescription = CFErrorCopyDescription(error)
NSLog(@"Failed to load font: %@", errorDescription);
CFRelease(errorDescription);
}
CFRelease(font);
CFRelease(provider);
Ajoutez les polices requises à votre projet (comme pour l’ajout d’images, faites simplement glisser Xcode), assurez-vous qu’elles sont ciblées sur votre projet.
ajoute cette méthode et charge les polices personnalisées (recommandé dans appDelegate didFinishLaunchingWithOptions
)
func loadFont(filePath: String) {
let fontData = NSData(contentsOfFile: filePath)!
let dataProvider = CGDataProviderCreateWithCFData(fontData)
let cgFont = CGFontCreateWithDataProvider(dataProvider)!
var error: Unmanaged<CFError>?
if !CTFontManagerRegisterGraphicsFont(cgFont, &error) {
let errorDescription: CFStringRef = CFErrorCopyDescription(error!.takeUnretainedValue())
print("Unable to load font: %@", errorDescription, terminator: "")
}
}
Exemple d'utilisation:
if let fontPath = NSBundle.mainBundle().pathForResource("My-Font", ofType: "ttf"){
loadFont(fontPath)
}
Utilisez la police:
UIFont(name: "My-Font", size: 16.5)
Vous pouvez ajouter les fichiers "FONT" requis dans le dossier des ressources. Ensuite, allez dans le fichier Project Info.plist
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];
oui, vous pouvez utiliser une police personnalisée dans votre application
pas à pas en suivant:
Ajoutez vos fichiers de polices personnalisés à votre projet dans les fichiers de support.
Ajoutez une clé à votre fichier Info.plist appelée UIAppFonts.
Faire de cette clé un tableau
Pour chaque police que vous avez, 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 l’appliquer si vous ne trouvez pas la police correcte, puis vous double-cliquez sur la police personnalisée et constatez soigneusement que le nom de la police apparaît en haut, puis copiez-la, collez-la ici [UIFont fontWithName: @ "cliquez ici après votre nom de police personnalisé" size: 20]
j'espère que vous aurez la bonne réponse
Bien que certaines des réponses ci-dessus soient correctes, j’ai rédigé un didacticiel visuel détaillé à l’intention des personnes qui rencontrent encore des problèmes de polices.
Les solutions ci-dessus vous invitant à ajouter la police au plist et à utiliser
[self.labelOutlet setFont:[UIFont fontWithName:@"Sathu" size:10]];
sont les bons. S'il vous plaît, utilisez maintenant n'importe quelle autre méthode. Si vous rencontrez toujours des problèmes pour trouver des noms de polices et les ajouter, voici le didacticiel -
Utilisation de polices personnalisées dans l'application ios
J'ai tout fait possible mais les nouvelles polices n'apparaissent pas et j'ai donc 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 quoi, votre police apparaîtra et tout fonctionnera correctement.
oui, vous pouvez utiliser une police personnalisée dans votre application
pas à pas en suivant:
Info.plist
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 votre UILabels
après l’application de ceci si vous n’obtenez pas la police correcte Ensuite, vous double-cliquez sur la police personnalisée, et vous voyez attentivement le nom de la police sur la face supérieure, puis copiez-la. Collez cette police, collez-la ici [UIFont fontWithName:@" here past your Custom font Name" size:20]
j'espère que vous aurez la bonne réponse
Comme amélioration @ bdev's answer , voici une version mise à jour qui répertorie uniquement les polices personnalisées.
Étape 1: Découvrez toutes les polices du système en utilisant la réponse et l'enregistrement dans un fichier de @ bdev.
Placez le code suivant dans la première fonction -(void)viewDidLoad
de View Controller's, après le [super viewDidLoad]
(ou dans le délégué d'application):
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSMutableArray *system_fonts = [NSMutableArray array];
for (NSString *familyName in [UIFont familyNames]) {
for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) {
[system_fonts addObject:fontName];
}
}
if([paths count] > 0) {
[system_fonts writeToFile:[[paths objectAtIndex:0]
stringByAppendingPathComponent:@"array.out"] atomically:YES];
}
Exécutez l'application une fois. Arrêtez-le après.
Étape 2: Ajouter une police personnalisée au projet
En utilisant la méthode indiquée dans la réponse acceptée, ajoutez vos polices personnalisées (n'oubliez pas de mettre à jour le .plist
et ajoutez les fichiers de polices à créer en cochant Add To Target
.
Étape 3: Comparer les polices système à la liste de polices actuelle
Remplacez les codes de l'étape 1 par:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSMutableArray *system_fonts = [NSMutableArray arrayWithContentsOfFile:[[paths objectAtIndex:0]
stringByAppendingPathComponent:@"array.out"]];
for (NSString *familyName in [UIFont familyNames]) {
for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) {
if (![system_fonts containsObject:fontName]) {
NSLog(@"%@", fontName);
}
}
}
Exécutez l'application pour afficher la liste des polices personnalisées que vous avez ajoutées.
Cela s'applique à iOS 3.2 jusqu'à iOS 6 (les versions futures fonctionnent probablement très bien). Fonctionne également avec .ttc
et .ttf
.
Comme toutes les réponses précédentes l'ont indiqué, c'est très bien possible et assez facile dans les versions iOS les plus récentes.
Je sais que ce n’est pas une réponse technique, mais étant donné que beaucoup de gens le font de manière erronée (violant ainsi efficacement les licences qui peuvent vous coûter beaucoup d’argent si vous êtes poursuivi en justice), permettez-moi de mettre une réserve en évidence: Intégrer une coutume Dans une application iOS (ou de tout autre type), la police est fondamentalement redistribue la police. La plupart des licences de polices commerciales font interdisent redistribution, alors veuillez vous assurer que vous agissez conformément à la licence.