В начале Лекции 5 рассматриваются небольшие темы :
- Обработка ошибок в Swift
- Использование Any в Swift
- «Кастинг типа» с помощью оператора as?
- Другие интересные классы: NSObject, NSNumber, Date, Data
Но основная тема Лекции 5 — это views. Профессор сразу вводит уточнения в терминологию. Он использует слово «view«в двух контекстах. Один из них — это >MVC. Буква V предназначена для View. В этом контексте View означает множество обобщенных (generic) миньонов вашего Controller. Этот View с заглавной буквойV в слове “View”, содержит множество views. Это именно те views, которым посвящена большая часть Лекции 5 и которые являются subclasses класса UIView в iOS.
views — это прямоугольные области на экране, в которых мы рисуем и получаем от пользователя так называемые “жесты прикосновения” (touch gestures), как одинарные, так и множественные. Но на Лекции 4 ведется разговор только о рисовании, управление жестами перенесено в Лекцию 6. Никогда раньше в своих курсах Пол Хэгарти не уделял столько внимания рисованию Views. Возможно, это связано с тем, что компактность кода и богатство синтаксических конструкций Swift позволяют представить рисование как увлекательный и очень интеллектуальный процесс.
В теоретической части рассматривается иерархичность views, superview, subviews и связанные с ними системы координат, способы инициализации views в зависимости от того, где они создаются: в коде или на storyboard, «ранняя» установка некоторых свойств в методе awakeFromNib.
views используют специальные структуры данных для рисования: числа с плавающей точкой CGFloat, точку CGPoint, размер CGSize и прямоугольник CGRect, а также множество удобных методов для работы с ними. Дается четкое различие между frame и bounds. Вводится понятие единицы измерения points с различным числом пикселей в зависимости от используемого устройства и соответствующее свойство contentScaleFactor.
Представлена подробная концепция рисование в draw (_rect:) с использованием Core Graphics и UIBezierPath. Рассказывается обо всем: рисование фигур, «вырезание» по UIBezierPath траектории с использованием addClip(), управление цветами с помощью класса UIColor, управление прозрачностью с помощью значения alpha, «cкрытие» view, не убирая его из иерархии.
Рассматриваются трудности использования класса NSAttributedString в Swift для «рисования» текстов в draw (_rect:), но в Swift 4 появился «волшебный» инициализатор NSRange, который берет диапазон Range<String.Index> из Мира Swift и преобразует его в диапазон NSRange из Мира Objective-C, с которым оперирует NSAttributedString. Теперь легко делать строки с атрибутами из строк, содержащих эмоджи и другие Unicodes символы.
Правильное использование шрифтов preferredFont (forTextStyle:) для пользовательского контента увеличивает привлекательность вашего приложения. На основе режима «перерисовки» сontentMode определяется, что будет происходить при изменении границ bounds вашего view. Дается представление о кривых Безье и показано их использование для построения сложных траекторий.
В конце лекции профессор начинает большой демонстрационный пример — пользовательское рисование игральной карты PlayingCard, который распространится и на Лекцию 6. На Лекции 5 демонстрируется лишь создание Модели MVC, который рисует игральную карту PlayingCard. Модель состоит из самой игральной карты PlayingCard и колоды игральных карт PlayingCardDeck, при этом очень интенсивно используются перечисления enum с ассоциированными значениями.
Код демонстрационного примера для Лекции 5 находится на Github для iOS 11 и на Github для iOS 12 в папке PlayingCard L5.
Лекция 5 и слайды на английском языке находятся на iTunes название “5. Drawing in iOS.”
Русскоязычный неавторизованный конспект Лекции 5, хронометрированный через каждые 5 минут, и представленный в виде PDF-файла, который можно скачать и использовать offline, а также в формате Google Doc доступны на платной основе.
Сильно ли отличаются лекции по 11 ios от 10? Начал изучать по старым вашим лекциям.Приобрел старый пакет лекций.И теперь не знаю ждать новые или проходить по старым.
Отличаются очень сильно, мало что общего за исключением многопоточности, «жизненных циклов» View Controller и Apps, множественных MVC: курс по iOS 10 — классика, и там очень подробно рассказывается о том, что нужно в первую очередь: Table View, Core Data, Core Motion. Курс iOS 11, с одной стороны, в начальной своей части напоминает курс iOS 7 и Objective-C: те же демонстрационные примеры и Задания на проектирование игры Set, и это хорошо, если вдруг вы решите ознакомится с Objective-C. А с другой стороны, во второй своей части курс iOS 11 основан на совершенно новых технологиях : Drag&Drop и приложения, основанные на Documents, там Table View заменен на Collection View, нет совсем Core Data, а постоянное хранение заменено хранением документов.
Я бы все таки предпочла начать с курса iOS 10, хотя начальная часть курса (Лекции 1-6) с точки зрения навыков работы со Swift очень сильная и в iOS 10 (Калькулятор с перечислениями enum), и в iOS 11 (Карточные игры с протоколами Equatable и Hashable).
Дальше — на любителя. Мне, например, нравится в iOS 10 демонстрационный пример «клиент Twitter».
Так что, если есть время, изучайте оба курса, материал пересекается слабо в практической области.
спасибо за такой подробный ответ! сажусь изучать дабы почерпать новое.отдельное спасибо за перевод!
Я заканчиваю лекцию 6 курса IOS11, мне лучше продолжать изучение этого курса или переходить на IOS10 курс ? Я понимал что отличие есть, но чтобы прям настолько… =(
Я бы советовала вам продолжить изучение курса iOS 11, а затем, если захотите, вернуться к отдельным частям курса iOS 10, например, к начальной его части в виде Калькулятора, на котором хорошо можно отработать навыки программирования перечислений enum. Многопоточность представлена в курсах iOS 10 и iOS 11 практически одинаково. Таблицы Table View прекрасно изложены в курсе iOS 10 на примере приложения Smashtag (Клиент Twitter), но в iOS 11 фреймворк Social, на котором профессор построил свой фреймворк Twitter, упразднен и уже не актуален, так что прийдется пройти через непростую процедуру адаптации Twitter Kit, изложенную в статье в статье http://bestkora.com/IosDeveloper/obnovlenie-demonstratsionnyh-primerov-i-reshenij-zadanij-kursa-ios-10-swift-3-do-swift-4-i-ios-11/.
Ну и так далее…
благодарю за ответ !