Чтение онлайн

на главную - закладки

Жанры

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

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

Шрифт:

Разобьем наш пример на два словаря с атрибутами. Словарь атрибутов для слова 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"]];

return [[NSAttributedString alloc] initWithAttributedString: result];

}

— (void)viewDidLoad{

[super viewDidLoad];

self.label = [[UILabel alloc] init];

self.label.backgroundColor = [UIColor clearColor];

self.label.attributedText = [self attributedText];

[self.label sizeToFit];

self.label.center = self.view.center;

[self.view addSubview: self.label];

}

@end

См. также

Разделы 1.17 и 1.18.

1.27. Представление видов «Основной — детали» с помощью UISplitViewController

Постановка задачи

Необходимо максимально эффективно использовать большой экран iPad, представив на нем два расположенных рядом контроллера видов.

Решение

Воспользуйтесь классом UISplitViewController.

Обсуждение

Контроллеры видов split view (будем называть эти виды разделенными экранами) есть только в iPad. Если вы работаете с iPad, то, вероятно, уже сталкивались с ними. Можно просто открыть приложение Settings (Настройки) в альбомном режиме и посмотреть. Видите, какой контроллер разделенного экрана показан на рис. 1.70?

У контроллера разделенного экрана есть левая и правая стороны. Слева отображаются основные настройки. При нажатии каждой из этих настроек открываются детали этого элемента, которые мы видим в правой части разделенного экрана.

Даже не пытайтесь инстанцировать объект типа UISplitViewController на каком-нибудь устройстве, кроме iPad. В результате вы получите исключение.

Рис. 1.70. Контроллер с разделенным экраном в приложении Settings (Настройки) в iPad

Apple предельно упростила процесс создания приложений, в основе которых лежит работа с разделенными экранами. Чтобы создать собственное приложение такого рода, просто выполните следующие шаги.

Поделиться:
Популярные книги

Волкодав

Семёнова Мария Васильевна
1. Волкодав
Фантастика:
фэнтези
героическая фантастика
9.46
рейтинг книги
Волкодав

Возвращение

Кораблев Родион
5. Другая сторона
Фантастика:
боевая фантастика
6.23
рейтинг книги
Возвращение

Мастер порталов

Лисина Александра
8. Гибрид
Фантастика:
боевая фантастика
попаданцы
технофэнтези
аниме
фэнтези
5.00
рейтинг книги
Мастер порталов

Кодекс Охотника. Книга ХХХ

Винокуров Юрий
30. Кодекс Охотника
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Охотника. Книга ХХХ

Цеховик. Книга 2. Движение к цели

Ромов Дмитрий
2. Цеховик
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Цеховик. Книга 2. Движение к цели

Гримуар темного лорда V

Грехов Тимофей
5. Гримуар темного лорда
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Гримуар темного лорда V

Моров. Том 5

Кощеев Владимир
4. Моров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Моров. Том 5

Великие мифы и легенды. 100 историй о подвигах, мире богов, тайнах рождения и смерти

Мудрова Ирина Анатольевна
Старинная литература:
мифы. легенды. эпос
5.00
рейтинг книги
Великие мифы и легенды. 100 историй о подвигах, мире богов, тайнах рождения и смерти

Набирая силу

Рокотов Алексей
2. Путь князя
Фантастика:
фэнтези
5.00
рейтинг книги
Набирая силу

Потомок бога 3

Решетов Евгений Валерьевич
3. Локки
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Потомок бога 3

Кодекс Императора II

Сапфир Олег
2. Кодекс Императора
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Императора II

Я снова царь. Книга XXXIII

Дрейк Сириус
33. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я снова царь. Книга XXXIII

Бояръ-Аниме. Газлайтер. Том 34

Володин Григорий Григорьевич
34. История Телепата
Фантастика:
фэнтези
боевая фантастика
аниме
5.00
рейтинг книги
Бояръ-Аниме. Газлайтер. Том 34

Петля, Кадетский Корпус. Книга четвертая

Алексеев Евгений Артемович
4. Петля
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Петля, Кадетский Корпус. Книга четвертая