Лекция 16 CS193P Winter 2017 — Alerts (экстренные сообщения) и Action Sheets (списки действий), Notifications (уведомления), Application Lifecycle («жизненный цикл» приложения) и Persistence (постоянное хранение).

В Лекции 16 освещаются разнообразные темы:

  • Экстренные сообщения Alerts и списки действий Action Sheets
  • Уведомления Notifications
  • “Жизненный цикл” приложения (UIApplication, AppDelegate, Info.plist, Capabilities)
  • Постоянное хранение Persistence

Alerts (экстренные уведомления) и Action Sheets (списки действий)

В iOS существуют два типа механизмов, которые позволяют с помощью “всплывающего окна” что-то спросить у пользователя. Один называется Alert  (экстренное сообщение), а другой — Action Sheets (список действий).

Они используют один и тот же API. Имеется некоторая разница между этими двумя механизмами. Наиболее легкий способ увидеть разницу между Alert и Action Sheets — это посмотреть пример, представленный на слайдах. В качестве такого примера Пол Хагерти взял уже знакомое нам приложение Cassini и на нем продемонстрировал все возможности Alert и Action Sheets. Особое внимание уделяется появлению Action Sheets в Popover «окошке» как на iPhone, так и на iPad. Профессор показывает демонстрационный пример использования экстренных сообщений Alert с текстовым полем внутри для нашего старого товарища — приложения FaceIt.

Читать далее

Лекция 15 CS193P Winter 2017 — Еще больше о Segues.

Вся Лекция 15 посвящена segues. Мы уже изучили на прошлых Лекциях Show segue и Show Detail segue, которые работают в Navigation Controllers и Split View Controllers.

На Лекции 15 изучаются все оставшиеся типы segues: Modal, Unwind, Popover, Emded.

Сначала излагается теоретическая часть по всем этим видам segue, а затем следует очень большой демонстрационный пример, показывающий все 4 вида segues в действии.

Читать далее

Лекция 14 CS193P Winter 2017 — Демонстрационный пример Dynamic Animation.

Лекция 14 полностью посвящена демонстрационному примеру, показывающему все возможности Dynamic Animation на примере космической видеоигры Asteroids с астероидами и космическим кораблем. Динамическая анимация Dynamic Animation используется по большей части в UI для таких вещей, как анимация на iPhone всплывающей снизу панели, которая ударяется о верхний край, немного колеблется и “замирает”. Для написания таких игр, например, SpriteKit и другие. Но  профессор выбрал создание видеоигры для демонстрации возможностей динамической анимации Dynamic Animation потому, что это занимательно и это дает возможность насыщенно показать множество различных “поведений” их взаимодействие в сложном составном «поведении».

В демонстрационном примере показан целый спектр «поведений»:  столкновения UICollisionBehavior, гравитации UIGravityBehavior и мета-поведения UIDynamicItemBehavior, толчок UIPushBehavior, а также создание пользовательского составное сложное «поведение», которое является subclass UIDynamicBehavior. Показана работа делегата столкновений UICollisionBehaviorDelegate. По ходу дела, как всегда, Пол Хэгерти демонстрирует синтаксические конструкции Swift в действии:  lazy vars,  инициализация с помощью выполняемых замыканий, разрыв циклических ссылок в памяти с помощью списка захвата [ unowned self ]  в замыканиях и когда такой способ разрыва является безопасным.

Читать далее

Лекция 13 CS193P Winter 2017 — Timer и анимация.

На Лекции 13 рассматривается одна маленькая тема -таймер Time, и одна большая — анимация.
В начале Лекции 13 рассматривается очень простой маленький класс, таймер Time. Таймер — это просто способ выполнять блок кода снова и снова с некоторым периодом времени. В действительности мы не используем таймеры для анимации как таковой, но очень часто при выполнении анимации мы привлекаем иногда таймеры. 

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

Таймер создан на основе специальной iOS технологию Run loops. Для  main queue система автоматически устанавливает  для вас Run loops, так что на main queue Timer работает всегда.
Пол Хэгерти представляет демонстрационный пример, в котором использует  приложение FaceIt, и заставляет в нем «лицо» «моргать глазами». Для этого создается subclass, в котором используются два вложенных друг в друга таймера. Но это еще не настоящая анимация.

Основная часть лекции посвящена анимации. Профессор делает небольшой обзор типов анимации, которые доступны в iOS, но фокусируется на анимации views (UIViews).

Читать далее