В Лекции 9 рассматриваются две важных темы :
- «жизненный цикл» View Controller,
- Scroll View
“Жизненный цикл” View Controller — это как View Controller рождается, живет, делает много интересных дел и затем умирает. Профессор подробно рассказывает нам о всех этапах жизни View Controller и о том, какие сообщения посылает ему система на протяжении его «жизненного цикла». Он начинает с момента создания View Controller, затем следует подготовка View Controller для того случая, когда к этому View Controller кто-то “переезжает” (segue). Следующий этап — установка ваших outlets, затем ваш View Controller появляется на экране и может исчезнуть, и может опять появиться, и опять исчезнуть. Затем его геометрия может быть изменена, например, при автоматическом вращении устройства.
Он не просто перечисляет такие методы «жизненного цикла» View Controller, как viewDidLoad, viewWillAppear, viewWillTransitionToSize и другие, но также очень подробно рассказывает о том, в каких ситуациях их нужно применять, а в каких воздержаться от их использования. Особое внимание уделяется тому, где следует стартовать такие затратные по времени задачи, как загрузка изображения из интернета.
Очень много информации о методах viewWillLayoutSubviews и viewDidLayoutSubviews и их связи с механизмом Autolayout. Они вызываются при изменении геометрии устройства и не только. Именно здесь следует делать геометрически- зависимые вычисления.
Профессор проводит короткую, но очень информативную демонстрацию, на которой показано, как «в живую» работают все методы «жизненного цикла» View Controller в приложении Concentration со Split View и Navigation Controller на iPhone и iPad.
Вторая половина Лекции 9 посвящена Scroll View, показано как добавить subviews к Scroll View, как установить контентную область для прокрутки и какие действия небходимо выполнить, чтобы Scroll View начал прокручивать и масштабировать изображение. Это сделано на примере создания MVC общего назначения ImageViewController, предназначенного для отображения изображений с возможностью прокрутки и масштабирования. Причем на этот раз профессор показывает как добавить Scroll View к Image View двумя способами: в Interface Builder и в коде.
Прежде на своих курсах «Разработка iOS приложений» он никогда не показывал, как добавить Scroll View в Interface Builder, ссылаясь на то, что это очень хитроумно и замысловато, и проще сделать это в коде. И, наконец, он это показал.
О, Да!! Это действительно хитроумно, не сразу привыкаешь к тому, что в Interface Builder при создании ограничений (constraints) между Image View и Scroll View, вы говорите о контентной области Scroll View, хотя видите перед собой маленькое «окошко» Scroll View, через которое вы будете рассматривать огромное изображение. Все это показывается на симуляторе iPhone X, у которого есть Safe Area и с которой Scroll View, взаимодействует очень интеллектуальным образом. При написании кода для Scroll View показан программистский прием использования вычисляемой переменной var image, которая осуществляя хранение в другой переменной, позволяет сделать необходимые настройки и избежать дублирования кода.
Код демонстрационных примеров для Лекции 9 находится на Github для iOS 11 и на Github для iOS 12 в папках Cassini L9 и Concentration L9. Лекция 9 и слайды на английском языке находятся на iTunes название “9. View Controller Lifecycle and Scroll View.”
Русскоязычный неавторизованный конспект Лекции 9, хронометрированный через каждые 5 минут, и представленный в виде PDF-файла, который можно скачать и использовать offline, а также в формате Google Doc доступны на платной основе.