2010-12-15 13 views
1

Da es anscheinend nicht möglich ist, eine benutzerdefinierte Schriftart über den Interface Builder anzuwenden, habe ich versucht, eine neue UILabel-abgeleitete Klasse zu definieren und in ihrer - (id) init-Methode die benutzerdefinierte Einstellung festzulegen Schriftart, die ich gerne verwenden würde: Dies führt nicht zum erwarteten Ergebnis, da die zur Laufzeit verwendete Schriftart immer noch die 'Helvetica' ist (meine benutzerdefinierte Schriftart ist 'afrikanisch' und funktioniert, wenn sie über Code eingestellt wird).Neue Beschriftungsklasse in iPhone mit benutzerdefinierter Schriftart

Hier ist meine UILabel-derived Schnipsel:

- (id)init { 
    UIFont *font = [UIFont fontWithName:@"african" size:10]; 
    [self setFont:font];  

    return self; 
} 

Deshalb bin ich derzeit durch zwingen die Schrift über Code, um das Problem zu lösen:

NSLog(@"Before FONT NAME IS ------------> %@", myLabel.font.fontName); 
UIFont *font = [UIFont fontWithName:@"african" size:10]; 
[myLabel setFont:font]; 
myLabel.text = @"HELLO!"; 
NSLog(@"After FONT NAME IS ------------> %@", myLabel.font.fontName); 

Der Ausdruck ist die folgende:

Before FONT NAME IS ------------> Helvetica 
After FONT NAME IS ------------> African 

Es scheint, dass die Standardschriftart, die ich in der init-Methode gesetzt habe, überschrieben wird: wo sonst sollte ich setzen es?

+0

Eigentlich ist es möglich, die Schriftart von Interface Builder zu ändern. Gehen Sie einfach zum Menü Schriftarten -> Schriftarten anzeigen. Wählen Sie dann Ihr Etikett und wählen Sie Ihre neue Schriftart. – ughoavgfhw

+0

Ich habe das versucht und obwohl ich die neue Schriftart hinzufügen und auf IB verwenden kann, habe ich zur Laufzeit immer noch die falsche. –

Antwort

1

Wenn Sie Ihre init-Funktion wie die „Selbst“ verwenden keinen Wert haben ... Alle init Funktionen haben wie diese

- (id)init { 
    self = [super init]; 
    if (self) { 
     // Your init code here 
    } 
    return self; 
} 

Zusätzlich aussehen sicher, dass Sie „Initwithframe:“ außer Kraft zu, und vielleicht "initWithCoder:", wenn Sie es von IB verwenden möchten.

+0

initWithCoder: Hat tatsächlich den Job gemacht, danke. –

Verwandte Themen