2012-06-18 13 views
64

Supponiamo che tu voglia un font specifico per UIFont. Come fai a sapere come si chiama?UIFont fontWithName font name

E.g. se si desidera utilizzare questo codice:

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

Da dove si copia la frase esatta "Macchina da scrivere americana". C'è un file di intestazione in Xcode?

UPDATE

trovato anche this a portata di mano.

risposta

230

potrebbe essere interessante per voi come a rapido successo all'interno del debugger:

(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 
) 
+0

Abbastanza pulito ...! – Snowcrash

+1

Ha aiutato a scegliere il nome corretto di un font. Grazie! –

+0

Molto utile, ho usato: NSLog (@ "% @", [UIFont fontNamesForFamilyName: @ "Helvetica Neue"]); –

5

Il documentation per UIFont è abbastanza chiaro su questo:

È possibile utilizzare il metodo fontNamesForFamilyName: per recuperare i nomi dei caratteri specifici per una data famiglia di font. (Nota: Si tratta di un metodo di classe)

È possibile ottenere i nomi di famiglia come questo:

NSArray *familyNames = [UIFont familyNames]; 
2
label.font = [UIFont fontWithName:@"HelveticaNeue-Light" size:17]; 
+2

Sebbene questo esempio di codice possa eventualmente rispondere alla domanda, sarebbe preferibile includere alcune spiegazioni essenziali alla risposta. Così com'è ora questa risposta aggiunge poco o nessun valore per i futuri lettori. –

+0

Non sono d'accordo con il commentatore precedente - questo era quello di cui avevo bisogno. – codehearted

3

Prova

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); 
    }]; 
}]; 
2

Ecco come si ottengono tutti i nomi di carattere nel progetto. Questo è tutto ... 3 righe di codice

NSArray *fontFamilies = [UIFont familyNames]; 

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

ho fatto una libreria per risolvere questo problema:

https://github.com/Nirma/UIFontComplete

Tutti i font sono rappresentati come un sistema Font enum e la biblioteca dettagli anche un modo di usarlo con i tuoi font personalizzati nella lettura di me.

Fondamentalmente questo:

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

viene sostituito con uno questo:

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

O questo:

let myFont = Font.helvetica.of(size: 12.0) 
Problemi correlati