Beispiel für NSAttributedString mit zwei verschiedenen Schriftgrößen?


80

NSAttributedString ist für mich einfach wirklich undurchdringlich.

Ich möchte einen UILabelText in verschiedenen Größen festlegen , und ich nehme an, dies NSAttributedStringist der richtige Weg, aber mit der Dokumentation dazu komme ich nicht weiter.

Ich würde es lieben, wenn mir jemand mit einem konkreten Beispiel helfen könnte.

Nehmen wir zum Beispiel an, der Text, den ich wollte, war:

(in small letters:) "Presenting The Great..."
(in huge letters:) "HULK HOGAN!"

Kann mir jemand zeigen, wie das geht? Oder sogar eine Referenz, die schlicht und einfach ist, wo ich für mich selbst lernen könnte? Ich schwöre, ich habe versucht, dies durch die Dokumentation und sogar durch andere Beispiele zum Stapelüberlauf zu verstehen, und ich verstehe es einfach nicht.

Antworten:


163

Sie würden so etwas tun ...

NSMutableAttributedString *hogan = [[NSMutableAttributedString alloc] initWithString:@"Presenting the great... Hulk Hogan!"];
[hogan addAttribute:NSFontAttributeName
              value:[UIFont systemFontOfSize:20.0]
              range:NSMakeRange(24, 11)];

Dadurch werden die letzten beiden Wörter in 20-Punkt-Text gesetzt. Der Rest der Zeichenfolge verwendet den Standardwert (der meiner Meinung nach 12 Punkte beträgt). Was beim Festlegen der Textgröße verwirrend sein kann, ist, dass Sie die Schriftart und die Größe gleichzeitig festlegen müssen - jedes UIFontObjekt kapselt beide Eigenschaften.


Schauen Sie sich diese Antwort für SWIFT-Bereiche an: stackoverflow.com/a/27041376/1736679
Efren

20

Swift 3-Lösung

Sie können die appendFunktion auch verwenden, anstatt Indizes in ObjC oder Swift anzugeben:

let attrString = NSMutableAttributedString(string: "Presenting The Great...",
                                           attributes: [ NSFontAttributeName: UIFont.systemFont(ofSize: 20) ])

attrString.append(NSMutableAttributedString(string: "HULK HOGAN!",
                                            attributes: [NSFontAttributeName: UIFont.systemFont(ofSize: 40) ]))

13

Swift 4 Lösung:

let attrString = NSMutableAttributedString(string: "Presenting The Great...",
                                       attributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 18)]);

attrString.append(NSMutableAttributedString(string: "HULK HOGAN!",
                                        attributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 36)]));

-1

Wenn Sie es auf einfache Weise tun möchten, gibt es ein Git-Repo namens OHAttributedLabel , das ich verwende und das eine Kategorie für NSAttributedString bereitstellt. Damit können Sie Dinge tun wie:

NSMutableAttributedString *mystring = [[NSMutableAttributedString alloc] initWithString:@"My String"];
[mystring setTextColor:[UIColor colorWithRGB:78 green:111 blue:32 alpha:1]];
mystring.font = [UIFont systemFontOfSize:14];

Wenn Sie keine Drittanbieter-Bibliothek verwenden möchten, finden Sie unter diesem Link ein anständiges Tutorial, wie Sie mit zugeordneten Zeichenfolgen beginnen können.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.