2015-04-20 7 views
8

Dieser Code gibt Me nil in font zurück.UIFont fontWithName return null

Ich füge die open sans ttf Datei zum Projektordner hinzu.

Was fehlt mir?

UIFont *font = [UIFont fontWithName:@"OpenSans-Bold" size:fontSize]; 
    if (font) 
    { 
     [str addAttribute:NSFontAttributeName value:[UIFont fontWithName:font size:fontSize] range:NSMakeRange(location, length)]; 
     label.attributedText = str; 
    } 

enter image description here

Antwort

11

Zu allererst sind eingetragene Ihre .ttf-Dateien in Ihrem .plist-Datei? Zweitens sind Ihre Schriften zu "Copy Bundle Resources" hinzugefügt? (Unter Ziel-> Build-Phasen)

Als nächstes versuchen Sie diesen Code, um alle verwendbaren Schriftarten und ihre Namen aufzulisten. Auf diese Weise können Sie sicherstellen, dass Sie die richtige Kennung für Ihre Schriftart verwenden.

for (NSString* fontFamily in [UIFont familyNames]) { 
    NSArray *fontNames = [UIFont fontNamesForFamilyName:fontFamily]; 
    NSLog (@"%@: %@", fontFamily, fontNames); 
} 

bearbeiten

Da diese Antwort ist ein bisschen alt ich es mit der entsprechenden Antwort aktualisiert Swift 3.0:

_ = UIFont.familyNames.map { 
    let fontNames = UIFont.fontNames(forFamilyName: $0) 
    print("Font Family: \($0), Font Names: \(fontNames)\n") 
} 
+1

Sie können für nur schreiben (NSString * family in [UIFont familyNames]) ... – gnasher729

+1

Ja danke Ich habe meinen Code bearbeitet – dehlen

+1

Danke allen! Ich habe diesen Link auch benutzt. –