Лекция 9 CS193P Fall 2017 — «Жизненный цикл» View Controller и Scroll View.

В Лекции 9 рассматриваются две важных темы :

  • «жизненный цикл» View Controller,
  • Scroll View

“Жизненный цикл” View Controller — это  как View Controller рождается, живет, делает много интересных дел и затем умирает. Профессор подробно рассказывает нам о всех этапах жизни View Controller и о том, какие сообщения посылает ему система на протяжении его «жизненного цикла».  Он начинает с момента создания View Controller, затем следует подготовка View Controller для того случая, когда к этому View Controller кто-то “переезжает”  (segue). Следующий этап — установка ваших outlets, затем ваш View Controller появляется  на экране и может исчезнуть, и может опять появиться, и опять исчезнуть.  Затем его геометрия может быть изменена, например, при автоматическом вращении устройства.

Он не просто перечисляет такие методы «жизненного цикла» View Controller, как viewDidLoadviewWillAppearviewWillTransitionToSize и другие, но также очень подробно рассказывает о том, в каких ситуациях их нужно применять, а в каких воздержаться от их использования. Особое внимание уделяется тому, где следует стартовать такие затратные по времени задачи, как загрузка изображения из интернета.

Очень много информации о методах 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 доступны на платной основе.