Текст Домашнего задания на английском языке доступен на iTunes «Developing iOS 9 Apps with Swift. Programming Project 6: Animation». Текст Задания 6 на русском языке размещен в PDF — файле
Для выполнения Задания 6 необходимо освоить материал Лекции 14.
В качестве прототипа кода для Задания 6 можно использовать код приложения «Dropit L14«, полученный на Лекции 14, который доступен на сайте Stanford для Swift 2 и Xcode 7 ; для Xcode 8 и Swift 2.3 — на Github, для Xcode 8 и Swift 3 — на Github, для Xcode 8, Swift 3 и iOS 10 — на Github.
В этом посте подробно описывается выполнение обязательных и дополнительных пунктов Задания 6. В посте представлен код для Xcode 8, Swift 3 и iOS 10, который находится на Github в разделе Breakout_Assignment_6.
Да, будем выполнять Домашнее Задание 6 сразу для iOS 10 и Swift 3, потому что Задание 6 не связано с данными, получаемыми из сети, не связано с существенно усовершенствованными в iOS 10 фреймворками Core Data и UserNotifications. Приложение Задания 6 будет очень простым в архитектурном плане — там не будет ни SplitViewController, ни специальных segues — Popovers, Unwind Segues, Embedded Segues, Modal Segues. Оно будет представлять собой два слабо связанных между собой MVC, объединенных простейшим множественным MVC — TabBarController. В Задании 6 нам предлагается продемонстрировать умение работать с системой Dynamic Animation, управляя динамическими элементами в виде UIViews. Кроме того, мы можем в таком простейшем приложении показать все возможные механизмы запуска кода — код в iOS приложениях не исполняется линейно, отдельные его фрагменты можно запустить с помощью:
- жестов,
- методов «жизненного цикла» UIViewController ( viewWillAppear, viewDidLoad, viewDidLayoutSubviews и т.д.) и UIView ( layoutSubviews )
- Наблюдателей Свойства didSet{ }, willSet{ },
- lazy ( отложенной) инициализации,
- инициализации в виде выполняемого замыкания ( с круглыми скобками «()» в конце),
- делегирования, которое реализуется в Swift свойствами в виде замыканий,
- вычисляемых переменных с хранением в другом месте (другое свойство, NSUserDefaults, Core Data).
Все эти механизмы мы будем использовать в нашем простейшем приложении и они могут не только давать очень понятный и компактный код, но и вызывать автоматический каскадный запуск вычислений, которые вы только описали и не запускали явно. Это создает действительно «магическое» впечатление.