Przykład NSAttributedString z dwoma różnymi rozmiarami czcionek?

80

NSAttributedString jest dla mnie naprawdę nieprzenikniona.

Chcę ustawić UILabeltekst o różnych rozmiarach i rozumiem, że NSAttributedStringjest to droga, ale nie mogę nigdzie dojść z dokumentacją na ten temat.

Bardzo bym chciał, żeby ktoś pomógł mi na konkretnym przykładzie.

Na przykład, powiedzmy, że tekst, który chciałem, brzmiał:

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

Czy ktoś może mi pokazać, jak to zrobić? A może nawet odniesienie, które jest jasne i proste, o którym mógłbym się nauczyć? Przysięgam, próbowałem to zrozumieć poprzez dokumentację, a nawet przez inne przykłady w Stack Overflow, ale po prostu nie rozumiem.

Le Mot Juiced
źródło

Odpowiedzi:

163

Zrobiłbyś coś takiego…

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

Spowoduje to ustawienie dwóch ostatnich słów w 20-punktowym tekście; reszta ciągu użyje wartości domyślnej (która, jak sądzę, wynosi 12 punktów). Przy ustawianiu rozmiaru tekstu może być mylące, że musisz ustawić krój pisma i rozmiar w tym samym czasie - każdy UIFontobiekt zawiera obie te właściwości.

bdesham
źródło
Sprawdź tę odpowiedź dla zakresów SWIFT: stackoverflow.com/a/27041376/1736679
Efren
20

Rozwiązanie Swift 3

Możesz również użyć appendfunkcji zamiast określać indeksy w ObjC lub Swift:

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) ]))
iljn
źródło
13

Rozwiązanie Swift 4:

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)]));
Kunal Shah
źródło
-1

Jeśli chcesz to zrobić w prosty sposób, istnieje repozytorium git o nazwie OHAttributedLabel , którego używam, które udostępnia kategorię na NSAttributedString. Pozwala na:

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

Jeśli nie chcesz korzystać z biblioteki innej firmy, sprawdź ten link, aby uzyskać przyzwoity samouczek na temat rozpoczynania pracy z przypisanymi ciągami.

JonahGabriel
źródło