2013-08-21 4 views
68

NSAttributedString ist nur wirklich undurchdringlich für mich.Beispiel für NSAttributedString mit zwei verschiedenen Schriftgrößen?

Ich mag ein UILabel einstellen Text in verschiedenen Größen zu haben, und ich sammle NSAttributedString ist der Weg zu gehen, aber ich kann nicht überall mit der Dokumentation zu diesem Thema erhalten.

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

Zum Beispiel, sagen wir mal der Text, den ich wollte, war:

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

Kann mir jemand zeigen, wie das zu tun? Oder sogar, eine Referenz, die ganz 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 auf Stack Overflow zu verstehen, und ich verstehe es einfach nicht.

Antwort

150

Sie würde 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 Worte in 20-Punkt-Text festgelegt; Der Rest der Zeichenfolge wird den Standardwert verwenden (was meiner Meinung nach 12 Punkte ist). Die Sache, die beim Festlegen der Textgröße möglicherweise verwirrend ist, ist, dass Sie die Schriftarten und die Größe zur gleichen Zeit festlegen müssen - jedes-Objekt kapselt diese beiden Eigenschaften.

+0

Überprüfen Sie diese Antwort für SWIFT-Bereiche: http://StackOverflow.com/a/27041376/1736679 – Efren

0

Wenn Sie es auf die einfache Weise tun möchten, gibt es ein Git Repo namens OHAttributedLabel, die ich verwende, die eine Kategorie auf NSAttributedString bietet. Damit können Sie tun Dinge 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 nicht über eine 3rd-Party-lib verwenden möchten, überprüfen this link für ein anständiges Tutorial, wie man mit zugeschrieben Strings zu beginnen.

14

Swift 3 Lösung

Auch können Sie die append Funktion statt eines festen Indizes in ObjC oder Swift verwenden:

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) ])) 
1

In Swift 4, würden Sie tun:

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)])); 
Verwandte Themen