Лекция 1 CS193P Winter 2017 — Введение в iOS 10, Xcode 8 и Swift 3. Часть 1.


Добро пожаловать на курс Стэнфорда CS193P. Это курс “Разработка iOS 10 приложений на Swift 3” Winter  2017.

Лекция 1 и слайды на английском языке находятся на  iTunes название “1. Introduction to iOS 10, Xcode 8, and Swift 3.”

На сайте представлен полный неавторизованный хронометрированный конспект Лекции 1 на русском языке.

Первая часть — 0 — 40 минута находится в этом посте,
Вторая часть — 40 — 85 минута — находится здесь.

Этот же конспект можно посмотреть в PDF файле:

Лекция 1 CS193P Winter 2017 iOS 10 (1).pdf


Код демонстрационного примера для Лекции 1 находится на Github в папке Calculator I.

На Лекции 1 профессор Пол Хэгерти представляет этот курс, озвучивает каковы предварительные требования для его успешного прохождения и дает беглый обзор iOS 10. Затем полностью погружается в очень большой и продолжительный демонстрационный пример.

Темы демонстрационного примера:

  • Создание проекта Project в Xcode 8
  • Построение пользовательского интерфейса (UI)
  • iOS симулятор
  • print (вывод на консоль, используя \( ) нотацию)
  • Определение класса в Swift, включая определение переменных экземпляра класса и методов
  • Связывание свойств (переменных экземпляра класса) в Swift коде с элементами пользовательского интерфейса UI (Outlets)
  • Привязка элементов UI к методам в коде Swift (Actions)
  • Доступ к iOS документации из кода
  • Optionals (?, неявное развертывание путем декларирования со знаком !, явное развертывание с помощью ! и if let)
  • Вычисляемые свойства (computed property)

За этими сухими пунктами скрывается блестящее изложение основных синтаксических конструкций Swift, начиная от самых элементарных и заканчивая такими сложными и непривычными как Optional и неявно развернутое Optional (implicitly unwrapped  Optional). Очень небольшое количество языков программирования имеет концепцию Optional. Это действительно крутая концепция, которую обязательно нужно понять, ибо в Swift она встречается повсюду, ей пронизаны всех iOS APIs. Но требуется некоторое время, чтобы к ней привыкнуть и эффективно ее использовать.

В заключении профессор показывает, как с помощью вычисляемой переменной (computed property) можно превратить неуклюжий традиционно написанный код в шедевр минималистического стиля.

Поэтому для начинающих изучать Swift (а не программирование как таковое) Лекции 1 и 2 являются must have. В Лекции 2 продолжится демонстрационный пример, начатый на этой Лекции.

Читать далее

Неофициально на Youtube выложены первые 3 лекции курса «Developing iOS 10 Apps with Swift».

Неофициально в Youtube выложены первые 3 Лекции курса «Developing iOS 10 Apps with Swift»:

Лекция 1. Overview of iOS.

Лекция 2. Model View Controller.

Лекция 3. More Swift & Foundation Framework.

 

Лекция 17 CS193P Spring 2016 — Segues, Core Location и MapKit.

Screen Shot 2015-12-27 at 2.26.54 PM

В Лекции 17 освещаются три основные темы:

  • Segues ( Modal, Unwind, Popover, Embed)
  • Core Location
  • MapKit

И в конце лекции начало большого демонстрационного примера, посвященного  картам и Segues, который продолжится на следующей Лекции 18.

Читать далее

Лекция 15 CS193P Spring 2016 — Application Lifecycle («жизненный цикл» приложения), Alerts и Cloud Kit.

screen-shot-2016-09-11-at-10-22-50-am
В Лекции 15 на сцену выходят в главной роли файл AppDelegate, который до сих пор Полом Хэгерти прятал во вспомогательную папку Supporting Files,  и CloudKit, этот реальный Mobile Backend as a Service (MBaaS) с авторизацией пользователей, с private  и public базами данных, структурированным хранением больших файлов и push уведомлениями. CloudKit — замечательный, очень простой, надежный  и практически бесплатный (до 1PB бесплатного public хранилища). Это прекрасная замена Parse, который недавно прекратил свое существование.

В результате в Лекции 15 освещаются три основные темы:

  • “Жизненный цикл” приложения (Notifications, AppDelegate, Info.plist, Capabilities)
  • Alerts и  Action Sheets
  • Cloud Kit

Читать далее

Лекция 13 CS193P Spring 2016 — NSTimer и анимация.

На Лекции 13 рассматривается одна маленькая тема -таймер NSTime, и одна большая — анимация.  
В начале Лекции 13 рассматривается очень простой маленький класс, NSTime, который позволяет вам вызывать метод либо периодически — снова и снова через определенный интервал, либо один раз когда-нибудь в будущем.Таймер создан на основе специальной iOS технологию Run loopsДля  main queue система автоматически устанавливает  для вас Run loops, так что на main queue NSTimer работает всегда.
Пол Хэгерти представляет демонстрационный пример, в котором использует  приложение FaceIt, и заставляет в нем «лицо» «моргать глазами» с помощью двух таймеров NSTime, перекрестно вызывающих друг друга, что выглядит менее «роботизированно», чем если бы использовался один повторяющийся таймер. По ходу дела он рассказывает что такое в Swift метод,  доступный Objective-C на этапе run time, потому что именно такой метод запускает NSTime. А также показывает, как создать Actions и Outlets в superclass.

Основная часть лекции посвящена анимации. Профессор делает небольшой обзор типов анимации, которые доступны в iOS, но фокусируется на анимации views (UIViews).

Читать далее

Лекция 12 CS193P Spring 2016 — Autolayout (Автоматическая разметка).

Screen Shot 2016-08-19 at 11.38.48 AM
Лекция 12 посвящена очень важной теме: механизму Autolayout (автоматическая разметка).
Вначале дается обзор того, что нам уже известно об Autolayout  к этому моменту времени, так как во всех предыдущих лекциях элементы Autolayout  уже были представлены в той или иной степени. Это направляющие голубые пунктирные линии, это использование CTRL-перетягивания, как способа # 1 для создания ограничений системы Autolayout, а также меню «Pin» и «Align«. В связи с тем, что начиная с iOS 8 используется новая концепция «Адаптивного интерфейса» и появилось понятие Size Class,  роль механизма Autolayout  сильно возросла и теперь в iOS без нее уже не обойтись.
Общую большую картину всех ваших ограничений вы можете получить в Document Outline (схеме UI), который является своеобразной «штаб-квартирой» системы Autolayout,  Именно здесь можно определить, какие ограничения действуют в определенном Size Class, можно разрешить конфликты между ограничениями, можно вести «охоту» за «магическими» числами.

Читать далее

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)

Screen Shot 2016-01-12 at 2.19.08 PM
Лекция 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)

Screen Shot 2015-12-27 at 2.26.54 PM

В первой части Лекции 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 — файлах

Лекция 15 CS193P Fall 2013 -Winter 2014 1.pdf

Лекция 15 CS193P Fall 2013 -Winter 2014 2.pdf

Дополнение к Лекции 14 Stanford CS 193P iOS 7. Адаптивные SplitViewController и Popover в приложении Photomania для iOS 9. (Objective-C).

Screen Shot 2015-11-26 at 6.05.00 PM

Screen Shot 2015-11-26 at 6.05.13 PM

С незапамятных времен Split View Controller был доступен только на  iPad. Начиная с  iOS 8, он теперь работает и на iPad, и на iPhone.

Это произошло потому, что в iOS 8 Apple представила, а в iOS 9 развивает дальше адаптивный пользовательский интерфейс (UI),  который включает в себя использование  Size Classes и адаптивную разметку Auto Layout. Согласно новой философии, пользовательский интерфейс может достаточно быстро настраиваться для любого типа прибора в зависимости от того, какой Size Class (класс размера) имеет его экран.

Адаптивный вариант UI для  Photomania Universal URL, функционирующий в iOS 9, находится на  Github.  Давайте посмотрим, как он был создан.

Читать далее