Приклад NSAttributedString із двома різними розмірами шрифту?


80

NSAttributedString просто дуже непроникний для мене.

Я хочу встановити UILabelдля тексту різні розміри, і я вважаю, що NSAttributedStringце шлях, але я не можу нікуди дістати документацію щодо цього.

Мені б дуже сподобалося, якби хтось міг допомогти мені конкретним прикладом.

Наприклад, припустимо, що текст, який я хотів, був:

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

Хтось може показати мені, як це зробити? Або навіть посилання, яке є простим і простим, де я міг би навчитися сам? Клянусь, я намагався зрозуміти це через документацію та навіть через інші приклади щодо переповнення стека, і я просто не отримую цього.

Відповіді:


163

Ви зробите щось подібне ...

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

Це встановить останні два слова у 20-крапковому тексті; решта рядка використовуватиме значення за замовчуванням (яке, на мою думку, становить 12 балів). Що може заплутати при встановленні розміру тексту, це те, що вам потрібно встановити шрифт і розмір одночасно - кожен UIFontоб’єкт інкапсулює обидві ці властивості.


Перевірте цю відповідь для діапазонів SWIFT: stackoverflow.com/a/27041376/1736679
Ефрен

20

Свіфт 3 Рішення

Крім того, ви можете використовувати appendфункцію замість того, щоб вказувати індекси в ObjC або 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) ]))

13

Рішення 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)]));

-1

Якщо ви хочете зробити це простим способом, я використовую репозиторій git з назвою OHAttributedLabel , який надає категорію на NSAttributedString. Це дозволяє робити такі речі:

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

Якщо ви не хочете використовувати сторонні бібліотеки, перегляньте це посилання, щоб отримати гідний підручник про те, як розпочати роботу з атрибутивними рядками.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.