Лекция 4 CS193P Winter 2017 — Views.

Лекция 4  полностью посвящена ViewsViews — это прямоугольные области на экране, в которых мы рисуем и получаем от пользователя так называемые “жесты прикосновения” (touch gestures), как одинарные, так и множественные. Но на Лекции 4 ведется разговор только о рисовании, управление жестами перенесено в Лекцию 5. Никогда раньше в своих курсах Пол Хэгарти не уделял столько внимания рисованию Views. Возможно, это связано с тем, что компактность кода и богатство синтаксических конструкций Swift позволяют представить рисование как увлекательный и очень интеллектуальный процесс.

В теоретической части рассматривается иерархичность Viewssuperviewsubviews и связанные с ними системы координат, способы инициализации Views в зависимости от того, где они создаются: в коде или на storyboard, «ранняя» установка некоторых свойств в методе awakeFromNib.

Views используют специальные структуры данных для рисования: точка CGPoint, размер CGSize и прямоугольник CGRect, а также множество удобных методов для работы с ними. Дается четкое различие между frame и bounds. Вводится понятие единицы измерения points с различным числом пикселей в зависимости от используемого прибора и соответствующее свойство contentScaleFactor.

Представлена подробная концепция рисование в draw (CGRect) с использованием Core Graphics и UIBezierPath. Рассказывается обо всем: рисование фигур, «вырезание»  по UIBezierPath траектории с использованием addClip(), управление цветами с помощью класса UIColor, управление прозрачностью  с помощью значения alpha, «cкрытие» view, не убирая его из иерархии.
Рассматриваются трудности использования класса NSAttributedString в Swift для «рисования» текстов в drawRect. Правильное использование фонтов preferredFontForTextStyle для пользовательского контента увеличивает привлекательность вашего приложения. На основе режима «перерисовки» сontentMode определяется, что будет происходить при изменении границ  bounds вашего view. Дается представление о кривых Безье и показано их использование для построения сложных траекторий.
В конце лекции профессор представляет демонстрационный пример FaceIt не просто как иллюстрацию теоретических частей лекции, а как возможность показать простоту рисования с использования UIBezierPath в Swift. Ни одна строчка кода не остается без подробных объяснений профессора.

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

Лекция 4 и слайды на английском языке находятся на iTunes название “4. Views.«  Код демонстрационного примера «FaceIt L4» доступен как на  iTunes название “Lecture 4 Demo Code: FaceIt.«, так и на Github.

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

 

Лекция 4 CS193P Winter 2017 — Views.: 2 комментария

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *