Wie richte ich eine benutzerdefinierte schriftart für die gesamte Anwendung?
Gibt es eine Möglichkeit, Wie für Globale schriftart [neue benutzerdefinierte schriftart], um die gesamte Anwendung in iphone objective-c.
Ich weiß, dass wir können, verwenden Sie die folgende Methode, um die schriftart für jedes label
[self.titleLabel setFont:[UIFont fontWithName:@"FONOT_NAME" size:FONT_SIZE]];
Aber ich möchte zu ändern für die gesamte Anwendung.
Bitte helft mir wenn jemand weiß.
- meinst du, dass Sie ändern möchten vorhandene schriftart der gesamten Anwendung ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anscheinend ALLES ändern UILabels insgesamt müssen Sie, um das setup eine Kategorie auf UILabel und ändern Sie die Standard-schriftart. So, hier ist die Lösung für Sie:
Erstellen Sie eine Datei CustomFontLabel.h
Erstellen Sie eine Datei CustomFontLabel.m
Nun ... in jedem view-controller, den Sie wollen, dass diese custom-font-Etiketten, gehören einfach an die Spitze:
Das ist alles - viel Glück
awakeFromNib
undinitWithFrame
, was nun, wenn Apple fügt einige wichtige bit der code dort?UILabel
Klasse, die mit einer Kategorie. Das problem ist, dass es keine vernünftigen Weg zu rufen, den code, den Sie ersetzt haben – Berufungsuper
in einer Kategorie wird nicht rufen Sie die code, den Sie haben, überschrieben. Jetzt die standard-Implementierung von[UILabel awakeFromNib]
scheint nicht, etwas wichtiges zu tun, so dass die "Lösung" funktioniert jetzt. Dies mag sich ändern in jedem minor-update und Ihre Anwendung brechen.Ican Lösung mit Kategorie sein könnte, bevorzugt nur um den Tag zu retten. Aber vermeiden Sie die Verwendung von Kategorie zu überschreiben von bestehenden Methoden, wie apple erklärt:
Vermeiden Sie Die Kategorie-Methode Name-Clashes
Beachten Sie auch, dass das überschreiben
-(id) init;
wäre sicherer als überschreiben-(id)initWithFrame:(CGRect)frame
. Sie würde nicht vor dem problem, nicht zu erhalten, touch-events, die beim Klick auf ein label auf UIButtons.Ist es das, was du meinst?
In Fall, dass Sie wollen, es zu tun, irgendwie automatisch (ohne
setFont
auf jede Kontrolle), ich glaube nicht, dass es möglich ist.Wenn Sie können beschränken Sie Ihre Anwendung oder diesem speziellen feature – iOS 5, gibt es eine neue API kommt, können Sie der Haut die Standard-Benutzeroberfläche sehr bequem. Ich kann Ihnen nicht die details, da Sie noch unter NDA an die Zeit, die ich hier Schreibe. Nehmen Sie einen Blick auf iOS 5 beta SDK, um mehr zu erfahren.
CustomLabel.h
CustomLabel.m