Лекция 5 CS193P Spring 2016 — Interface Builder, FaceView Controller, Жесты и Множественные MVCs

Как видно из названия,  Лекция 5 охватывает множество важных тем: дополнительные возможности Xcode по отображению пользовательских изображений непосредственно на storyboard, взаимодействие Модели и Controller с целью изменения View, жесты, множественные MVC и способы их создания.

В начале Лекции 5  продолжается работа над приложение FaceIt, добавляя новые элементы на наше «лицо» — «брови» и возможность «хмурить» их, возможность открывать и закрывать «глаза», что увеличивает маневренность для отображения различных эмоций на нашем «лице».

Показано, как с помощью атрибутов  @IBDesignable и @IBInspectable можно получать и настраивать пользовательские изображения непосредственно на storyboard. Как заставить пользовательский UIView «переписываться» при изменении его public параметров.

Далее обсуждается Модель для приложения FaceIt, которая позволяет задавать «выражение лица», и как заставить обновляться пользовательский интерфейс (UI) при изменении Модели. Оказывается, Наблюдатель Свойства didSet {} срабатывает не всегда. Подробно разбирается, как заставить обновляться UI с помощью Наблюдатель Свойства didSet {}  для outlets.

Рассказывается  как нужно работать с самыми разными жестами: pinch  (стягивание), pan (движение по экрану),  rotation (вращение),  swipe (смахивание), tap (стук) и в разных условиях: на storyboard  и в коде. Большое внимание уделяется как распознаванию различных жестов, так и их обработки как в случае управления экранно-зависимыми элементами UI, так и Моделью.

Демонстрационный пример показывает работу с двумя совершенно различными жестами :  pinch и panОдин — с двумя пальцами, другой — с одним. Один жест мы добавили на storyboard, а другой — в коде. Один обрабатывает наш Controller, а другой —  наш View. Система IOS великолепно определяет разницу между жестами, когда один сменяет другой.

В конце лекции Пол Хэгерти переходит к большой теме «Множество MVC«.  Очень подробно рассматриваются принципы функционирования Navigation Controller, который помимо основных функциональных возможностей, является адаптивной версией Split View Controller для iPhone.

Лекции и слайды на английском языке представлены в iTunes название “5. Interface Builder, FaceView Controller, Gesture, and Multiple MVCs”. Код демонстрационного примера «FaceIt L5» для Swift 3.0  и Xcode 8 код находится на Github, а для Swift 3 .2  и Xcode 9 — также на Github.

Русскоязычный неавторизованный конспект лекции 5, хронометрированный через каждые 5 минут, и представленный в виде PDF-файла, который можно скачать и использовать offline, а также Google Doc доступны на платной основе.

Лекция 5 CS193P Spring 2016 — Interface Builder, FaceView Controller, Жесты и Множественные MVCs: 10 комментариев

  1. Добрый день. Никто не сталкивался с такой проблемой. При данном коде:

    faceView.addGestureRecognizer(UIPinchGestureRecognizer(
    target: faceView, action: #selector(FaceView.changeScale(_:))
    ))

    Xcode пишет Missing argument for parameter «action» in call , запись такого рода устарела (_:) ?

  2. Ещё один нюанс. Почему в моём проекте не возможно задать в storyboard’e после использования @IBInspectable параметр scale в 0.8, а только в целое число?

Обсуждение закрыто.