Вандад Нахавандипур

iOS. Приемы программирования


Скачать книгу

подписи

      Необходимо отметить, что этот текст отображается в одном экземпляре класса UILabel.

      Итак, что мы видим в этом примере? Перечислю.

      • Текст iOS имеет следующие атрибуты:

      • полужирный шрифт размером 60 точек;

      • черный цвет фона;

      • красный цвет шрифта.

      • Текст SDK имеет следующие атрибуты:

      • полужирный шрифт размером 60 точек;

      • белый цвет шрифта;

      • светло-серую тень;

      • красный цвет фона.

      Удобнее всего создавать атрибутированные строки с помощью метода initWithString:, относящегося к изменяемому классу NSMutableAttributedString, и передавать этому методу экземпляр NSString. Так создается атрибутированная строка без каких-либо атрибутов. Затем, чтобы присвоить атрибуты различным частям строки, мы воспользуемся методом setAttributes: range: класса NSMutableAttributedString. Этот метод принимает два параметра:

      • 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: