Размер шрифта
-
+

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"]];

Страница 70