Продолжая развивать идею о дополнении курса «Developing iOS 8 Apps with Swift» 2015 г. некоторыми важными темами, давайте рассмотрим использование Core Data при создании приложений в iOS 9 на Swift.
Core Data — один из наиболее мощных фреймворков в iOS 9. Фундаментально, это способ создания Swift (Objective-C) объектов как объектов, “отображенных” в SQL или XML базах данных. Это своего рода “мостик” между объектно-ориентированной “территорией” и “территорией” баз данных. В качестве базы данных доминирует SQLite.
Архив рубрики: iOS 9
Адаптивные SplitViewController и Popover для iOS 9. (Swift). Часть 2
Это вторая часть поста, связанного с изучением адаптивного поведения Split View Controller и Popover в iOS 9 на iPad и на iPhone, которое стало возможным благодаря концепции Size Classes. Обучение состоит в создания на Swift практических приложений, работающих с сервером Flickr.com, который является облачным сервисом для хранения фотографий.
В первой части поста перечислены пять интересных с точки зрения разработчика случаев применения адаптивного Split View Controller и Popover, которые отличаются сложностью Master. Detail везде один и тот же — единственный Image View Controller, вставленный в Navigation Controller и призванный показывать изображение фотографии:
1. Классический вариант: один элемент в Master, вставленный в Navigation Controller, (часто это Table View Controller)
2. Множество Table View Controller элементов, вставленных в Navigation Controller
3. Tab Bar Controller в качестве Master
4. Случай разных UI и разных пользовательских классов для приборов с разными Size Classes здесь не рассматривается, но идею можно посмотреть в “Адаптивный интерфейс с двумя storyboards для iOS 9”.
5. Адаптивный Popover
В первой части поста осуществлялось построение базового экспериментального приложения на Swift, которое было распространено на случаи 1-2. Во второй части мы будем дальше усложнять наше экспериментальное приложение и распространим его на случаи 3 и 5. Код для всех вариантов можно найти на Github.
Адаптивные SplitViewController и Popover для iOS 9. (Swift). Часть 1
Проводя адаптацию предыдущего стэнфордского курса «Developing iOS 7 Apps for iPhone and iPad» 2014 г. к iOS 9, я обнаружила, что в курсе «Developing iOS 8 Apps with Swift» 2015 г. практически отсутствует настройка адаптивного Split View Controller, так как там он использовался только для Графического Калькулятора на Лекции 6 и 7 и в Домашнем Задании 3. В этом варианте Master не представлял собой традиционную таблицу или каскад таблиц, выбирая из которых соответствующий элемент, мы получали в качестве Detail изображение, связанное с выбранным элементом.
В курсе по iOS 8 нам не требовалось более скрупулезной настройки адаптивного UI, состоящего из SplitViewController и Popover.
Мне представляется целесообразным восполнить этот пробел и реализовать универсальное приложение Photomania Universal URL, которое представлено в стэнфордском курсе «Developing iOS 7 Apps for iPhone and iPad» 2014 г, на Swift в iOS 9. Приложение Photomania на Swift и iOS 9 находится на Github. Давайте подробно рассмотрим как оно было построено.
При проектировании этого приложения на iOS 9 и Swift мы должны решить три вопроса:
- создать адаптивный интерфейс в iOS 9 на основе концепции Size Classes
- обеспечить сохранение данных в Core Data и работу с ними UI приложения
- осуществлять подачку данных с сервера Flickr в фоновом режиме
В этом посте решается первая задача, а именно, — создание адаптивного интерфейса со SplitViewController и Popover.
Задание 5. Top Places (Objective-C + iOS 9). CS 193P iOS 7 2014. Адаптивный UI. Обязательные пункты 6 -12.
Начало решения Задания 5 (обязательные пункты 1 — 5) находится в посте.
Здесь представлено продолжение выполнения Задания 5 (обязательные пункты 6 — 12).
Текст Домашнего задания на английском языке доступен на iTunes в пункте “Developing iOS 7 app:Assignment 5″.
На русском языке
Задание выполнялось в Xcode 7 iOS 9. Режимы «Use Auto Layout» и «Use Size classes» в этом Домашнем задании включены.
Код Задания 5 находится на Github.
Задание 5. Top Places (Objective-C + iOS 9). CS 193P iOS 7 2014. Обязательные пункты 1 -5.
Содержание
Цель задания — создать приложение, которое показывает пользователю список наиболее популярных мест на Земле, в которых сделаны фотографии и размещены на сервисе Flickr, а также дает возможность просмотра этих фотографий. Это Задание преследует следующие методические задачи: вы должны научиться работать с Table Views, Scroll Views, Image View и многопоточностью, узнать, как строить универсальные приложения, которые работают на любых как iPhone, так и на iPad (с соответствующим UI на каждом).
Все данные, которые вам необходимы, будут загружаться с Flickr.com c использованием API Flickr. Вам будет предоставлен код для создания URLs запросов к Flickr, которые понадобятся в этом домашнем задании.
Текст Домашнего задания на английском языке доступен на iTunes в пункте “Developing iOS 7 app:Assignment 5″.
На русском языке
Задание выполнялось в Xcode 7 iOS 9. Режимы «Use Auto Layout» и «Use Size classes» в этом Домашнем задании включены.
Код Задания 5 находится на Github. Ниже представлен мой вариант решения Задания 5. У Вас может быть совсем другая логика построения этого приложения.
Это первая часть Задания 5.
Вторая часть Задания 5 находится здесь.
Дополнение к Лекциям 15, 16 и 17 Stanford CS 193P iOS 7. Адаптивный интерфейс с двумя storyboards для iOS 9.
Концепция построения адаптивного пользовательского интерфейса начиная с iOS 8 сводится не только к применению механизма Autolayout, она буквально пронизывает все самые интересные элементы пользовательского интерфейса (UI) : Split View Controllers, Popovers, Action Sheets, модальные View Controllers. Теперь Split View Controllers и Popovers, можно использовать не только на iPad, но и на iPhone, они подстраиваются автоматически под размер и ориентацию прибора, а точнее под Size Classes. В них заложено по умолчанию адаптивное поведение для приборов с Compact размером, и вам вообще не нужно ничего специально настраивать. Но иногда такое адаптивном поведение может нам не понравиться. Например, Popover для iPhone работает как модальный View Controller, полностью оккупирующий весь экран. Если вас это не устраивает, то вы можете настроить его минимальными программными усилиями нужным вам образом, например, заставив функционировать Popover на iPhone так, как мы привыкли видеть его на iPad, то есть ввиде маленького всплывающего «окошка».
Идея создания адаптивного интерфейса сводится к тому, что можно использовать одну storyboard для проектирования пользовательского интерфейса для различных приборов и их ориентаций. Мы видели это в посте «Адаптивные интерфейсы SplitView Controller и Popover в iOS 9», где используются адаптивные свойства Split View Controllers и Popovers.
Stanford CS 193P iOS 7 Лекция 17 — фотокамера, датчики движения и Core Motion, «жизненный цикл» приложения (+iOS 9)
Лекция 17 начинается с продолжения демонстрационного примера Photomania Add Photo из предыдущей лекции: небольшая корректировка кода, связанная с очисткой imageURLs, и обработка ошибок местоположения.
Затем следует короткое теоретическое введение о том, как использовать фотокамеру с помощью класса ImagePickerController, который является subclass UIViewController. И вы можете разместить его на экране либо модально, либо в Popover, в зависимости от того, находитесь ли вы на iPad или на iPhone, и это первый раз, когда у нас будет View Controller, который приходит не со storyboard.
Используем возможности ImagePickerController для работы с реальной фотокамерой в приложении Photomania.
Stanford CS 193P iOS 7 Лекция 16 — Modal Segues, Text Fields, Alerts и Action Sheets (+iOS 9)
Лекция 16 начинает с модальных View Controllers, которые захватывают весь экран на iPhone и представляются как Popover на iPad. Появление модальных View Controllers обеспечивается модальным Modal segue , а обратный возврат данных — связанным с ним отсоединяющий Unwind segue. Modal segue достаточно легко понять, а вот Unwind segue может показаться несколько запутанным. Профессор Хэгерти очень подробно рассказывает о создании Unwind segues, о том, когда можно применять Unwind segues, а когда — нет, о причинах их скрытности — они не рисуются на storyboard. О том, как установить свойства этих segues, несмотря на их скрытность. Комбинация слайдов и демонстрационного примера помогают понять не только как устроены эти Unwind segues, но и каково их участия в жизни модальных View Controllers.
Stanford CS 193P iOS 7 Лекция 15 — MapKit и Embed Segue (+ iOS 9)
В первой части Лекции 15 очень подробно представлена концепция Map Kit , который представляет собой пользовательский интерфейс (UI) для locations, о которых мы говорили на прошлой Лекции, и Embed segue для «вставки картинки в картинку».
Представляя MapKit, профессор рассказывает об всем, что показывается на карте: MKMapView (визуальное представление карты), MKAnnotation (представление элементов UI ввиде булавки с красной головкой), MKDirections (направления), MKOverlay («наложения»), MKMapCamera (используется для 3D отображения карты), MKLocalSearch (мощный инструмент поиска места в Мире по имени).
Рассматриваются методы делегата MKMapViewDelegate.
Весь теоретический материал, связанный с картами и segue для вставки, показывается в большом демонстрационном примере, который является расширением нашего приложения Photomania.
Кроме этого, в демонстрационном примере показаны еще две вещи, касающиеся segues. И это очень важные вещи. Одна из них — как заставить работать segue из кода. До сих пор мы создавали segue с помощью CTRL-перетягивания от чего-то на storyboard к чему-то другому на storyboard, а затем мы кликали на том, от чего мы тянули segue, и “переезжали” на тот MVC, к которому мы тянули segue. В этой Лекции показано, как “запускать” “переезд” в коде.
Вторая важная вещь относительно segue — это новый вид segue, который осуществляет “переезд-вставку”.
В этом демонстрационном примере есть все:
- превращение объектов Photo ( фотографий, получаемых с Flickr и сохраняемых в Core Data) в annotation, которые можно показывать на карте, путем изменения Модели Базы Данных и реализации протокола MKAnnotation
- снабжение выноски (callout), которая появляется при нажатии на красную «булавку» на карте, вспомогательными views типа UIImage и UIControl (частный случай кнопка UIButton), последний может использоваться ля создания segue
- очень подробно представлены основные методы протокола MKMapViewDelegate и очень подробно объясняется где их следует использовать, а где — нет
- строятся совершенно разные UI для iPhone и iPad : для iPhone традиционно на основе Navigation Controller, а для iPad — на основе Split View Controller, но кроме этого используются различные классы для Image View Controller
- для iPad создается потрясающий UI с использованием Embed segue для «вставки картинки в картинку» и с применением полиморфизма как элемента концепции объектно-ориентированного программирования
Демонстрационный пример в русском неавторизованном конспекте этой лекции описывается и выполняется в iOS 9 и Xcode 7 с необходимыми комментариями по поводу отличий в iOS 7 и iOS 9.
Лекция и слайды на английском языке находятся на iTunes название “15. MapKIt and Embed Segue”
Код для демонстрационных примеров Photomania Map можно найти здесь, а для iOS 9 и Xcode 9 (адаптивный интерфейс) на Github. В этом демонстрационном примере интерфейс имеет существенное различие для iPhone и iPad и требует использование двух различных storyboard, каждая из которых в случае адаптивного интерфейса использует концепцию Size Classes, а их переключение осуществляется в зависимости от размере экрана. Идеи такого интерфейса изложены здесь.
Русский неавторизованный конспект лекции, хронометрированный через каждые 5 минут, представлен в PDF — файлах
Стэнфордский курс CS193P (iOS9, Swift) осень 2015 не планируется размещать на iTunes?
Стэнфордский курс CS193P: «iPhone and iPad Application Programming», который сегодня, 4 декабря, закончился для студентов Стэнфорда, и исходя из традиций прошлых лет, уже должен быть выложен на iTunes, там не появится в ближайшее время. Этим курсом интересуются во всем мире, все его ждали с нетерпением и на Quora был задан вопрос: «Когда курс CS193P: «iPhone and iPad Application Programming» 2015-2016 появится на iTunes?».