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

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

Жанры

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

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

Шрифт:

• transitionFromView — вид, с которого должен начинаться переход. В контексте нашего сегвея это вид с исходным контроллером вида;

• toView — это целевой вид, к которому должен привести переход. В нашем сегвее это вид с целевым контроллером вида;

• duration — длительность анимации в секундах;

• options — тип анимации, которую вы хотите выполнить. Это значение типа UIViewAnimationOptions. Если вы хотите просмотреть все параметры, доступные здесь, нажмите на клавиатуре Command+Shift+O, введите UIViewAnimationOptions, а потом нажмите клавишу Enter;

• completion — блок завершения, вызываемый сразу же по окончании перехода.

Прежде чем завершить

этот раздел, необходимо упомянуть еще об одной важной вещи. Работа, которую вы выполняете (специальный переход), должна осуществляться в методе экземпляра perform специального класса сегвея. Это, в частности, означает, что вы не можете вывести в этом методе окно с предупреждением и отобразить его для пользователя (а также рассчитывать на то, что пользователь сможет нажать кнопку Yes или No в зависимости от своего решения и только потом выполнить переход). Это не сработает. Поэтому сначала подумайте, чего вы хотите добиться в вашем сегвее и является ли создание подкласса от UIStoryboardSegue наилучшим выходом из ситуации.

См. также

Разделы 6.0 и 6.1.

6.5. Размещение изображений и других компонентов пользовательского интерфейса в раскадровках

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

Требуется размещать в файлах раскадровок изображения, кнопки и другие компоненты пользовательского интерфейса.

Решение

Воспользуйтесь библиотекой объектов из конструктора интерфейса и найдите в ней разные компоненты для пользовательского интерфейса. Когда будете готовы поместить их в файлы раскадровок, просто перетащите туда эти элементы. Затем вы сможете сконфигурировать эти компоненты в инспекторе атрибутов.

Обсуждение

Допустим, вы хотите разместить в раскадровке несколько изображений. Находясь в конструкторе интерфейса, где уже должен быть открыт файл раскадровки, нажмите комбинацию клавиш Ctrl+Alt+Command+3 и таким образом перейдите в библиотеку объектов. Здесь найдите компонент Image View (Вид с изображением) (рис. 6.16) и перетащите его в основной вид с контроллером. Теперь одновременно нажмите на клавиатуре Alt+Command+4, чтобы открыть инспектор атрибутов. На этой панели вы сможете сконфигурировать вид с изображением. Чтобы поместить изображение в этот вид, просто добавьте изображение к вашему проекту. Пока вид с изображением остается выделенным, в инспекторе атрибутов задайте для этого вида свойство image (рис. 6.17).

Рис. 6.16. Вид с изображением, служащий компонентом пользовательского интерфейса (так он выглядит в библиотеке объектов)

Рис. 6.17. Установка свойства-изображения для вида с изображением в инспекторе атрибутов в конструкторе интерфейса

Периодически могут возникать ситуации, когда вы просто не можете найти в библиотеке объектов нужный компонент, но уверены, что он существует. Со мной это тоже случалось. В библиотеке объектов есть очень удобная строка для поиска, в которой вы можете написать имя интересующего вас компонента. Чтобы попасть в строку поиска, убедитесь, что вы уже открыли библиотеку объектов (для этого требуется нажать

сочетание клавиш Ctrl+Alt+Command+3), а затем Command+Alt+L (рис. 6.18).

Рис. 6.18. Строка поиска в библиотеке объектов позволяет быстро найти интересующий объект

В инспекторе атрибутов можно сконфигурировать большинство важнейших свойств различных компонентов пользовательского интерфейса, которые вы помещаете в раскадровки. Тем не менее для решения определенных задач не обойтись без написания кода.

См. также

Раздел 6.0.

Глава 7. Параллелизм

7.0. Введение

Параллелизм (конкурентное исполнение программ) возникает, когда одновременно выполняется несколько задач. Современные операционные системы позволяют параллельно выполнять задачи даже на одном процессоре. Такая возможность гарантируется, если выделить на каждую задачу строго определенный промежуток (квант) процессорного времени. Например, если за секунду требуется решить 10 задач и все они имеют одинаковый приоритет, то операционная система разделит 1000 мс на 10 и уделит решению каждой задачи 100 мс процессорного времени. Таким образом, все эти задачи решаются в течение одной секунды, и пользователю кажется, что это происходит параллельно.

При этом технологии развиваются, и теперь в нашем распоряжении есть процессоры с несколькими ядрами. Это означает, что один процессор действительно может решать несколько задач одновременно. Операционная система диспетчеризует задачи к процессору и дожидается, пока они будут выполнены. Вот так все просто!

Grand Central Dispatch (GCD) — это низкоуровневый API, написанный на языке С и работающий с блоковыми объектами. GCD отлично приспособлен для направления различных задач нескольким ядрам, так что программист может не задумываться о том, какое ядро решает какую задачу. Многоядерные устройства с операционной системой Mac OS X, в частности ноутбуки, имеются в свободном доступе уже довольно давно. А с появлением таких многоядерных устройств, как новый iPad, мы можем писать и интересные многопоточные приложения для системы iOS, рассчитанные на работу с несколькими ядрами.

Центральной составляющей GCD являются диспетчерские очереди. Диспетчерские очереди, как мы вскоре увидим, представляют собой пулы потоков, управляемые GCD в базовой операционной системе, будь то iOS или Mac OS X. Вы не будете работать с этими потоками напрямую. Вы будете иметь дело только с диспетчерскими очередями, распределяя задачи по этим очередям и приказывая очередям инициировать решение задач. GCD предлагает несколько режимов решения задач: синхронно, асинхронно, с определенной задержкой и т. д.

Чтобы приступить к использованию GCD в ваших приложениях, в проект не требуется импортировать каких-либо специальных библиотек. Apple уже встроила GCD в различные фреймворки, в частности в Core Foundation и Cocoa/Cocoa Touch. Все методы и типы данных, имеющиеся в GCD, начинаются с ключевого слова dispatch_. Например, dispatch_async позволяет направить задачу в очередь для асинхронного выполнения, а dispatch_after — выполнить блок кода после определенной задержки.

До того как появился GCD, программисту приходилось создавать собственные потоки для параллельного решения задач. Примерно такой поток разработчик iOS создаст для того, чтобы выполнить определенную операцию 1000 раз:

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

Идеальный мир для Лекаря 8

Сапфир Олег
8. Лекарь
Фантастика:
юмористическое фэнтези
аниме
7.00
рейтинг книги
Идеальный мир для Лекаря 8

Последняя Арена 6

Греков Сергей
6. Последняя Арена
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Последняя Арена 6

По воле короля

Леви Кира
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
По воле короля

Душелов. Том 4

Faded Emory
4. Внутренние демоны
Фантастика:
юмористическая фантастика
ранобэ
фэнтези
фантастика: прочее
хентай
эпическая фантастика
5.00
рейтинг книги
Душелов. Том 4

Темный Лекарь 2

Токсик Саша
2. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь 2

Эволюция мага

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

(Не) моя ДНК

Рымарь Диана
6. Сапфировые истории
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
(Не) моя ДНК

Протокол "Наследник"

Лисина Александра
1. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Протокол Наследник

Измена. Наследник для дракона

Солт Елена
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Измена. Наследник для дракона

Неудержимый. Книга II

Боярский Андрей
2. Неудержимый
Фантастика:
городское фэнтези
попаданцы
5.00
рейтинг книги
Неудержимый. Книга II

Камень. Книга 4

Минин Станислав
4. Камень
Фантастика:
боевая фантастика
7.77
рейтинг книги
Камень. Книга 4

Измена. Право на сына

Арская Арина
4. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Право на сына

Инквизитор Тьмы 4

Шмаков Алексей Семенович
4. Инквизитор Тьмы
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Инквизитор Тьмы 4

Кротовский, сколько можно?

Парсиев Дмитрий
5. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Кротовский, сколько можно?