Как видно из названия, Лекция 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 доступны на платной основе.
Спасибо за материал. Превосходно.
Добрый день. Никто не сталкивался с такой проблемой. При данном коде:
faceView.addGestureRecognizer(UIPinchGestureRecognizer(
target: faceView, action: #selector(FaceView.changeScale(_:))
))
Xcode пишет Missing argument for parameter «action» in call , запись такого рода устарела (_:) ?
Нет. Все очень современно. Покажите нам ваш changeScale, а еще лучше ссылку на ваш код в Github.com
Вот мой проект
https://github.com/extracode4/stanford
А в чем проблема? Ваш код прекрасно работает.
Пришлось снести Xcode, чтобы всё заработало )))
Это не самое большое горе. Желаю успеха.
Ещё один нюанс. Почему в моём проекте не возможно задать в storyboard’e после использования @IBInspectable параметр scale в 0.8, а только в целое число?
Напечатайте 0.8 и все.
Напечатай 0,8, а не 0.8