Je développe un jeu et j'aimerais utiliser une police personnalisée dans mon application. J'utilise SpriteKit pour cela, si c'est important. J'ai essayé d'utiliser ceci https://github.com/deni2s/IBCustomFonts mais je ne peux pas le faire fonctionner avec cette police http://www.fontspace.com/freaky- polices/emulogic
J'ai essayé diverses choses et j'ai enregistré la police sur l'info.plist de l'application ... Est-ce que quelqu'un sait ce qui se passe?
Tout d'abord, je suppose que SpriteKit ne fait aucune différence.
Enfin, vous souhaitez répertorier toutes vos polices au démarrage de l’application afin de voir le nom utilisable de votre police. Vous ferez ça avec ce petit bout de code:
NSArray *fontFamilies = [UIFont familyNames];
for (int i = 0; i < [fontFamilies count]; i++)
{
NSString *fontFamily = [fontFamilies objectAtIndex:i];
NSArray *fontNames = [UIFont fontNamesForFamilyName:[fontFamilies objectAtIndex:i]];
NSLog (@"%@: %@", fontFamily, fontNames);
}
Recherchez votre police dans les résultats imprimés. Par exemple, je rechercherais "Josefin" et je verrais que le nom de police réel est "JosefinSansStd-Light". Après cela, vous ne devez utiliser cette police que par:
UIFont *customFont = [UIFont fontWithName:@"JosefinSansStd-Light" size:20];
Dans iOS8, vous ajoutez vos polices directement au projet et elles sont visibles dans le générateur d'interface. Modifiez votre code pour en tenir compte, mais définissez par programme la police pour iOS7 et sélectionnez-la dans le générateur d'interface xCode6. PS Le générateur d'interface de xCode6 vous donne le nom de police correct que vous pouvez copier-coller dans le code ci-dessous.
#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
if(SYSTEM_VERSION_LESS_THAN(@"8.0"))
{
UIFont *customFont = [UIFont fontWithName:@"OpenSans-Light" size:32];
self.registerLabel.font = customFont;
}
J'espère que cela aide, à la vôtre.
Aucun problème pour utiliser des polices personnalisées, je l'ai fait. Suivez ces étapes:
Et conseil, ajoutez ce nom sous forme de macro dans votre fichier ..Prefix.pch. Il sera plus facile de l’utiliser dans votre projet si vous devez utiliser la police plusieurs fois.
Le problème que je pense que vous avez eu est que vous avez correctement enregistré la police, mais celle-ci n'a pas été copiée dans le bundle d'applications. Ainsi, lorsque l'application a été exécutée, elle n'a pas pu trouver la police. C'est pourquoi l'étape 2 est importante. J'ai passé beaucoup de temps à essayer de comprendre cela la première fois :)
Pour y parvenir à Swift
Si vous souhaitez répertorier toutes vos polices au démarrage de l'application, il suffit de voir le nom utilisable de votre police. Vous pouvez le faire avec ce petit morceau de code:
UIFont.familyNames.forEach {
print("fontFamily: \($0), fonts: \(UIFont.fontNames(forFamilyName: $0))")
}
Je n'ai jamais réussi à obtenir ces réponses au travail après avoir essayé plusieurs fois. La seule façon pour moi d’avoir une police personnalisée pour suivre les instructions de la réponse acceptée est de créer une étiquette cachée dans le story-board qui utilise la police. Je peux utiliser la police par programmation. Bizarre et hacky je sais mais cela a fonctionné pour moi.
Si aucune des méthodes ci-dessus ne vous convient ET si vous utilisez votre police personnalisée "uniquement par programmation" (c’est-à-dire que vous ne l’avez utilisée dans aucune xib), vous devrez l’utiliser au moins une fois dans une xib, n’importe où. .
(PS Stuart Clark - déjà répondu à cela, donc pas de crédit pour moi s'il vous plaît. Cependant, j'ai décidé de reformuler et de le poster comme une réponse séparée, parce que j'ai raté sa réponse, ce n'était pas clair pour moi quand je l'ai lu. J'ai trouvé cette solution par hasard lorsque je testais la police personnalisée dans une xib, et j’ai vu que cela fonctionnait ailleurs par programmation, mais lorsque j’ai supprimé la police de xib, elle ne fonctionnait plus par programmation.)
Si vous utilisez Xcode 6, c'est aussi simple que cela. Ajoutez simplement un dossier font
dans votre projet, ajoutez vos polices dans le dossier, et le tour est joué.
Mis à jour pour Swift 3.
let fontFamilies:[String] = UIFont.familyNames
for fontFamily: String in fontFamilies {
let fontNames: [String] = UIFont.fontNames(forFamilyName: fontFamily)
print("\(fontFamily) \(fontNames)");
}
Peut-être une solution rapide - cela a été fait pour moi lorsque la police a déjà fonctionné, mais un nouveau, par exemple. L'étiquette n'affichait pas la police souhaitée:
dossier de données dérivé propre, en profondeur et vide.
please try below code.
@end
@implementation UILabel (CustomFont)
-(void)setFontName:(NSString *)value{
CGFloat newsize = (self.font.pointSize * [UIScreen mainScreen].bounds.size.width)/320;
[self setFont:[UIFont fontWithName:self.font.fontName size:newsize]];
}
@end
@implementation UITextField (CustomFont)
-(void)setFontName:(NSString *)value{
CGFloat newsize = (self.font.pointSize * [UIScreen mainScreen].bounds.size.width)/320;
[self setFont:[UIFont fontWithName:self.font.fontName size:newsize]];
}
@end
@implementation UIButton (CustomFont)
-(void)setFontName:(NSString *)value{
CGFloat newsize = (self.titleLabel.font.pointSize * [UIScreen mainScreen].bounds.size.width)/320;
[self.titleLabel setFont:[UIFont fontWithName:self.titleLabel.font.fontName size:newsize]];
}
@end
@end
@interface UILabel (CustomFont)
-(void)setFontName:(NSString *)value;
@end
@interface UITextField (CustomFont)
-(void)setFontName:(NSString *)value;
@end
@interface UIButton (CustomFont)
-(void)setFontName:(NSString *)value;
@end