UILabel Erscheinungsbild schriftart und zugeschrieben string font
In meiner app habe ich eine Globale benutzerdefinierte schriftart gelten für alle labels, wie so:
UIFont *font = [UIFont fontWithName:kMyFontName size:15.0];
[[UILabel appearance] setFont:font];
Diese funktioniert einwandfrei. Jedoch, in einigen Fällen möchte ich in der Lage sein, wenn Sie eine andere schriftart für eine bestimmte region, ein UILabel string.
So, ich habe so etwas wie dieses:
NSString *string = @"Foo Bar Baz";
UIFont *boldFont = [UIFont fontWithName:kMyBoldFontName size:15.0];
NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:string];
[attrString setAttributes:@{ NSFontAttributeName: boldFont } range:NSMakeRange(0, 3)];
self.myLabel.attributedText = attrString;
Allerdings scheint dies nicht zu funktionieren. Ich erwarte, dass die "Foo", kühn zu sein, aber der gesamte string nur hat die Standard-schriftart. Es ist, als ob die Fette Schrift ist nicht zur Anwendung und ist wird überschrieben durch den Zeichensatz, der auf dem UILabel Aussehen proxy.
Wenn ich entfernen Sie die UILabel Erscheinungsbild Zeile dann funktioniert das Prima (ich kann sehen, Teil der Zeichenfolge Fett gedruckt). Im Grunde möchte ich meine eigene schriftart angewendet, um das Etikett, sondern eine separate schriftart angewendet, um zu einer anderen region der Schnur. Normalerweise funktioniert das gut mit zugeschrieben strings, sondern für einige Grund-Einstellung der UILabel Erscheinungsbild schriftart deaktiviert diese Funktion (oder so es scheint).
- Erwarteten Ergebnisse: "Foo Bar Baz"
- Die tatsächlichen Ergebnisse: "Foo Bar Baz"
Wenn ich entfernen Sie die [[UILabel appearance] setFont:]
Zeile, dann funktioniert es:
- "Foo Bar Baz"
(aber die benutzerdefinierte schriftart nicht auf den rest der Zeichenkette).
Also meine Frage ist: gibt es eine Möglichkeit, an eine einzige schriftart verwenden, als die Standard-app-breit, aber immer noch in der Lage sein, teilweise zu überschreiben, dass die Verwendung zugeschrieben strings?
Auch, wenn jemand zu mir erklären können, warum dies nicht funktioniert würde ich es begrüßen.
Tut mir Leid, dass, ich aktualisiert meine Frage mit mehr details. Lassen Sie mich wissen, wenn es immer noch nicht klar.
Nur als test, versuchen, zu tun:
self.myLabel.font = nil;
.interessanter Vorschlag, aber das schien nicht zu arbeiten.
u überprüfen Sie die benutzerdefinierte schriftart in Fettdruck-schriftart-Unterstützung, becoz einige Schriftarten nicht unterstützen Fett?
InformationsquelleAutor nebs | 2014-07-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht mischen und übereinstimmen, zurückzuführen text und nur-text; das ist der Grund, warum das entfernen der
setFont
Methode arbeitet, weil, wenn Sie es verwenden, es wird davon ausgegangen, ein Klartext-UILabel.[UILabel appearance]
font-Spezifikation (wie Sie sagte). Ich möchte, dass die Globale Erscheinung irgendwie, ist das möglich? Ansonsten würde ich die schriftart von jedem label in der app auch manuell (mit impliziten labels, wie in buttons und tab-bar-Elemente).Sie können nicht mit zugeschrieben Etiketten bedauerlich, aber halten es einfach und konsistent ist, die einfachste Sache zu tun ist Unterklasse UILabel und definieren Sie die Standardeinstellungen auf init; danach können Sie einfach die änderungen wie Sie es tun.
Der Bereich um das Ende des Strings (string.Länge - 1), da die Palette beginnt bei 0.
behoben
InformationsquelleAutor brandonscript
Set-schriftart-und Textfarbe zu null kurz vor Einstellung zugeschrieben string.
InformationsquelleAutor ksysu
Gibt es zwei wichtige Teile:
UIAppearance
gilt im moment der Zugabe UI-element für FensterlabelInstance.font = ...
setzt alle Schrift-Attribute der aktuell eingestellten zugeschrieben stringAlso, wenn Sie wollen, zu halten
UIAppearance
Anpassung müssen Sie in Ihren benutzerdefinierten zugeschrieben Zeichenfolge, die nach Ihrem Etikett Hinzugefügt Fenster.Referenz-Artikel über wie funktioniert
UIAppearance
Arbeit: Peter Steinberger ist cool ArtikelInformationsquelleAutor Andrew Vyazovoy