Wir haben UILabel erweitert, um in unseren Apps Standardschriftarten und -farben für alle Verwendungen eines bestimmten Etikettentyps anwenden zu können. Z.B.UIAppearance wirkt sich nicht auf UILabels aus, die programmgesteuert erstellt wurden
@interface UILabelHeadingBold : UILabel
@end
In unserem AppDelegate wenden wir Schriftarten und Farben wie dieses
[[UILabelHeadingBold appearance] setTextColor:<some color>];
[[UILabelHeadingBold appearance] setFont:<some font>];
Wenn ein UILabel in unserem XIB die hinzugefügt haben, können wir nun die Klasse wählen vom Typ UILabelHeadingBold zu sein, und es funktioniert wie erwartet . Das Etikett wird mit der richtigen Schriftart und Farbe angezeigt, wie in unserem AppDelegate angegeben.
Wenn wir jedoch ein Label programmgesteuert erstellen, z.
UILabelHeadingBold *headingLabel = [[UILabelHeadingBold alloc] initWithFrame:CGRectMake(10, 10, 100, 30)];
[self.mainView addSubview:headingLabel];
Das UILabel erhält nicht die erwartete Schriftart/Farbe. Wir müssen diese Attribute manuell anwenden.
Gibt es eine Möglichkeit, UIAppearance auf programmatisch erstellte UI-Elemente wirksam werden zu lassen, oder funktioniert es nur, wenn es in XIB verwendet wird?
Es * ist * manchmal auch in Code erstellt UILabels arbeiten, aber die Ergebnisse sind widersprüchlich, und das Verhalten ist anders zwischen iOS 5 und, na ja, weißt du. Verwenden Sie einfach nicht UIAppearance, um 'UILabels –
+1 für die Information anzupassen, dass ich nicht die einzige bin, die inkonsistente Ergebnisse erhält (dauerte Stunden Codierung, bis ich Ihren Kommentar gefunden habe). +1 für robert.wijas Lösung - die ich jetzt benutze - und alles ist in Ordnung. – anneblue