iOS. Приемы программирования - стр. 70
• setAttributes – словарь, ключи которого являются символьными атрибутами и значение каждого ключа зависит от самого ключа. Вот наиболее важные ключи, которые можно задать в этом словаре:
• NSFontAttributeName – значение этого ключа является экземпляром UIFont и определяет шрифт для того или иного фрагмента строки;
• NSForegroundColorAttributeName – значение этого ключа относится к типу UIColor и определяет цвет шрифта определенного фрагмента строки;
• NSBackgroundColorAttributeName – значение этого ключа относится к типу UIColor и определяет цвет фона, на котором будет отрисовываться определенный фрагмент строки;
• NSShadowAttributeName – значение этого ключа должно быть экземпляром NSShadow и задавать тень, которую будет отбрасывать определенный фрагмент строки;
• range – значение типа NSRange, определяющее начальную точку и длину группы символов, к которой вы хотите применить указанные атрибуты.
Чтобы просмотреть все ключи, которые можно передавать этому методу, просто изучите онлайновую документацию Apple по классу NSMutableAttributedString. Я не буду помещать здесь ссылку на документацию, так как Apple может рано или поздно изменить эту ссылку, а вот поиск вас точно не подведет.
Разобьем наш пример на два словаря с атрибутами. Словарь атрибутов для слова iOS создается в коде таким образом:
>NSDictionary *attributesForFirstWord = @{
>NSFontAttributeName: [UIFont boldSystemFontOfSize:60.0f],
>NSForegroundColorAttributeName: [UIColor redColor],
>NSBackgroundColorAttributeName: [UIColor blackColor]
>};
>А слово SDK создается с помощью следующих атрибутов:
>NSShadow *shadow = [[NSShadow alloc] init];
>shadow.shadowColor = [UIColor darkGrayColor];
>shadow.shadowOffset = CGSizeMake(4.0f, 4.0f);
>NSDictionary *attributesForSecondWord = @{
>NSFontAttributeName: [UIFont boldSystemFontOfSize:60.0f],
>NSForegroundColorAttributeName: [UIColor whiteColor],
>NSBackgroundColorAttributeName: [UIColor redColor],
>NSShadowAttributeName: shadow
>};
Собрав все вместе, получаем следующий код, который не только создает нашу подпись, но и задает для нее атрибутированный текст:
>#import "ViewController.h"
>@interface ViewController ()
>@property (nonatomic, strong) UILabel *label;
>@end
>@implementation ViewController
>– (NSAttributedString *) attributedText{
>NSString *string = @"iOS SDK";
>NSMutableAttributedString *result = [[NSMutableAttributedString alloc]
>initWithString: string];
>NSDictionary *attributesForFirstWord = @{
>NSFontAttributeName: [UIFont boldSystemFontOfSize:60.0f],
>NSForegroundColorAttributeName: [UIColor redColor],
>NSBackgroundColorAttributeName: [UIColor blackColor]
>};
>NSShadow *shadow = [[NSShadow alloc] init];
>shadow.shadowColor = [UIColor darkGrayColor];
>shadow.shadowOffset = CGSizeMake(4.0f, 4.0f);
>NSDictionary *attributesForSecondWord = @{
>NSFontAttributeName: [UIFont boldSystemFontOfSize:60.0f],
>NSForegroundColorAttributeName: [UIColor whiteColor],
>NSBackgroundColorAttributeName: [UIColor redColor],
>NSShadowAttributeName: shadow
>};
>/* Находим фрагмент iOS в целой строке и задаем атрибуты для этого фрагмента */
>[result setAttributes: attributesForFirstWord
>range: [string rangeOfString:@"iOS"]];
>/* Делаем то же самое со строкой SDK */
>[result setAttributes: attributesForSecondWord
>range: [string rangeOfString:@"SDK"]];