web-dev-qa-db-fra.com

UIFont fontWithName nom de la police

Supposons que vous souhaitiez une police spécifique pour UIFont. Comment savez-vous comment ça s'appelle?

Par exemple. si vous voulez utiliser ce code:

[someUILabelObject setFont:[UIFont fontWithName:@"American Typewriter" size:18]];

D'où copiez-vous la phrase exacte "American Typewriter". Existe-t-il un fichier d'en-tête dans Xcode?

MISE À JOUR

Aussi trouvé this pratique.

65
Snowcrash

Cela pourrait être intéressant pour vous en tant que gagnant rapide dans le débogueur:

(lldb) po [UIFont fontNamesForFamilyName:@"Helvetica Neue"]

(id) $1 = 0x079d8670 <__NSCFArray 0x79d8670>(
HelveticaNeue-Bold,
HelveticaNeue-CondensedBlack,
HelveticaNeue-Medium,
HelveticaNeue,
HelveticaNeue-Light,
HelveticaNeue-CondensedBold,
HelveticaNeue-LightItalic,
HelveticaNeue-UltraLightItalic,
HelveticaNeue-UltraLight,
HelveticaNeue-BoldItalic,
HelveticaNeue-Italic
)

Novembre 2018 - Mise à jour Une nouvelle référence Swift-y pour " polices personnalisées avec Xcode " - de Chris Ching. J'ai dû mettre à jour, car il s'agit d'un excellent rapport qualité-prix pour la nouvelle façon, combinée à toutes les parties manquantes, d'utiliser des polices personnalisées dans un projet.

237
andreas-supersmart

Le documentation pour UIFont est assez clair à ce sujet:

Vous pouvez utiliser le fontNamesForFamilyName: méthode pour récupérer les noms de polices spécifiques pour une famille de polices donnée. ( Note : C'est une méthode de classe)

Vous pouvez obtenir les noms de famille comme ceci:

NSArray *familyNames = [UIFont familyNames];
5
Alladinian

Essayer

NSArray *familyNames = [UIFont familyNames];
[familyNames enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop){
    NSLog(@"* %@",obj);
    NSArray *fontNames = [UIFont fontNamesForFamilyName:obj];
    [fontNames enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop){
        NSLog(@"--- %@",obj);
    }];
}];
3
Ezra

J'ai créé une bibliothèque pour résoudre ce problème:

https://github.com/Nirma/UIFontComplete

Toutes les polices sont représentées comme un système Font enum et la bibliothèque détaille également une façon de l’utiliser avec vos polices personnalisées lors de la lecture.

Fondamentalement ceci:

let font = UIFont(name: "Arial-BoldItalicMT", size: 12.0)

Est remplacé par soit ceci:

let font = UIFont(font: .arialBoldItalicMT, size: 12.0)

Ou ca:

let myFont = Font.helvetica.of(size: 12.0)
3
Nirma
label.font = [UIFont fontWithName:@"HelveticaNeue-Light" size:17];
2
brian.clear

Voici comment vous obtenez tous les noms de police dans votre projet. C'est ça ... 3 lignes de code

NSArray *fontFamilies = [UIFont familyNames];

    for (int i=0; i<[fontFamilies count]; i++)
    {
        NSLog(@"Font: %@ ...", [fontFamilies objectAtIndex:i]);
    }
2
Sam B