Лекция 17 CS193P Fall 2017 — Core Motion & Camera.

Лекция 17 посвящена некоторых специфических API доступа к оборудованию (hardware) нашего устройства. Рассматриваются два API: это Core Motion, отвечающее, главным образом, за определение местоположения устройства в пространстве в процессе перемещения устройства, и Фотокамера (Camera), с помощью которой мы можем сделать фотографию и/или видео и разместить их в своем приложении.

Итак, CoreMotion — это объектно-ориентированное API для доступа к первичным датчикам движения на вашем устройстве. Core Motion поставляет в приложение данные первичных датчиков Apple приборов: акселерометра (accelerometer), гироскопа (gyro) и магнитометра (magnetometer).

Класс, с помощью которого вы можете получить всю информацию как с самих датчиков, так и о наличии датчиков в приборе, называется CMMotionManager. В лекции подробно рассматриваются различные режимы получения информации как с физических датчиков, так и с абстрактного комбинированного датчика CMDeviceMotion.

Датчики движения в iOS — удивительный механизм. И надо отдать должное инженерам Apple — подключение датчиков к приложению является предельно простым, а их дальнейшее использование не ограничивает вас ни в чём. Как и все приложения, дополненные реальностью, они захватывают в первую очередь тем, что дают вам в руки инструмент для преобразования информации об окружающем вас мире в виртуальный мир вашего телефона. Профессор показывает  демонстрационный пример игры в карты Playing Cards, дополняя ее элементами реального Мира, а именно реальным ускорением свободного падения, полученным с акселерометра. Эти показания датчика движения нашего устройства (iPhone или iPad) «подцепляются» к «поведению» гравитации UIGravityBehavior, действующему в динамическом аниматоре Dynamic Animator. 

Самый простой способ представить фотокамеру в вашем приложении — это воспользоваться классом UIImagePickerController. Есть также фреймворки PHPhotoLibrary и AVCaptureDevice, которые позволяют вам управлять гораздо большим числом аспектов при съёмке фото и видео. Пол Хэгерти рассматривает самый простой способ работы с фотокамерой с помощью класса UIImagePickerController. Профессор очень подробно рассказывает как создавать, конфигурировать и модально представлять его с помощью метода present. Класс UIImagePickerController не работает без делегата, поэтому подробно рассматриваются методы делегата для доступа как к оригинальной, так и отредактированной (если это разрешено) фотографии, сделанной пользователем. Выбранная  фотография (изображение) размещается в качестве фонового изображения в нашем EmojiArt документе. Полученное фоновое изображение размещается непосредственно в Модели документа  EmojiArt документе, и это дает нам возможность делиться нашим документом через iCloud Drive, даже несмотря на то, что в качестве фонового изображения у нас  было изображение, снятое фотокамерой (локально) на конкретном устройстве. По ходу лекции демонстрируется работа с перечислениями enum ImageSource с разными ассоциированными значения. У перечисления enum ImageSource два варианта: удаленный .remote (интернет) с ассоциированными значениями URL и UIImage и локальный .local(фотокамера) с ассоциированными значениями Data и UIImage>.

Код демонстрационных примеров для Лекции 17 находится на Github  для iOS 11  и на Github для iOS 12 в папке EmojiArt L17 и  Playing Cards L17.  Лекция 17 и слайды на английском языке находятся на  iTunes название “17. Core Motion & Camera.”

Перевод Лекции 17 сделан с помощью Павла из группы Laconic. Его участие в переводе придало русскоязычному тексту более свободный и ироничный стиль, который также присущ и самому Полу Хэгерти.
Русскоязычный неавторизованный конспект Лекции 17, хронометрированный через каждые 5 минут, и представленный в виде PDF-файла, который можно скачать и использовать offline, а также в формате Google Doc доступны на платной основе.

P.S. В конце Лекции 17 профессор объявляет о Лекции 18 по Accessibility (Доступность для людей с огрпниченными возможностями), но в этом курсе iOS 11 Swift 4 в iTunes она не выложена. Однако ее можно посмотреть в прошлом курсе iOS 10 Swift 3.
Лекция 17 CS193P Winter 2017 — Accessibility (доступность для людей с ограниченными возможностями).
Таким образом, это последняя Лекция курса «Developing  iOS 11 Apps with Swift». Ура!!