Лекция 1 CS193P Spring 2016 — Обзор курса и введение в iOS, Xcode и Swift. (часть 2)

screen-shot-2016-11-05-at-3-16-24-pm

Лекция 1 CS196P Весна 2016 и слайды на английском языке находятся на  iTunes название “1. Course Overview and introduction to iOS, Xcode, and Swift.”
Ниже представлен неавторизованный русскоязычный конспект Лекции 1, который состоит из двух частей:
Первая часть Лекции 1 CS193P Весна 2016 — 0 — 60 минута находится
здесь
,
Вторая часть Лекции 1 CS193P Весна 2016 —  60 — 77 минута — находится в этом посте.
Код демонстрационного примера для Лекции 1 находится на Github для Xcode 7 и Swift 2.2. Для Swift 3.0  и Xcode 8 код находится на Github, а для Swift 3 .2  и Xcode 9 — также на Github.

—————— 60-ая минута Лекции ——————

Так что идем дальше и добавляем дисплей на наш пользовательский интерфейс.
Будем добавлять дисплей сверху. Мы хотим что-то подобное тому, что на стандартном калькуляторе, пришедшим вместе с операционной системой  Mac, и чтобы в правом углу был «0», но, возможно, с другими цветами.
Я возвращаюсь в Область Утилит в окно Палитра, откуда я доставал свои кнопки для цифровой клавиатуры. Теперь я буду перетягивать метку — Label, которая представляет собой  readonly текст.

Screen Shot 2016-04-25 at 8.40.47 AM

Пользователь не может касаться метки и затем печатать туда что-то с помощью маленькой клавиатуры на iPhone. Это  readonly текст, и именно его мы хотим иметь на нашем калькуляторе.

Читать далее

Лекция 1 CS193P Spring 2016 — Обзор курса и введение в iOS, Xcode и Swift. (часть 1)

Screen Shot 2016-04-21 at 11.17.38 AM
Лекция 1 и слайды на английском языке находятся на  iTunes название “1. Course Overview and introduction to iOS, Xcode, and Swift.”
Ниже представлен неавторизованный русскоязычный конспект Лекции 1, который состоит из двух частей:

Первая часть — 0 — 60 минута находится в этом посте,
Вторая часть — 60 — 77 минута — здесь.
Код демонстрационного примера для Лекции 1 находится на Github для Xcode 7 и Swift 2.2. Если вы установили Xcode 8, то для Swift 2.3 код находится на Github, а для Swift 3 — также на Github.

————————————————————————————————-

Добро пожаловать на курс Стэнфорда CS193P. Это версия Spring 2016, и сегодня я собираюсь рассказать вам очень быстро о том, что собой представляет этот курс, чтобы вы были уверены, что находитесь в нужном месте.
Screen Shot 2016-04-21 at 3.24.03 PM

Сегодня

  • О чем этот курс?
    • Почему я здесь?
  • Предварительные требования
    • Вы должны быть уверенным объектно-ориентированным программистом.
  • Обзор iOS
    • Что находится в iOS?
  • Покажи мне!
    • Лучше один раз увидеть демонстрационный пример, чем сто раз услышать.

Я буду говорить о предварительных требованиях, потому что это супер важно для успешного прохождения этого курса.
Затем я дам вам очень короткий обзор того, что представляет собой iOS. Большую часть этого вы знаете, потому что у вас есть iPhones или iPads или еще что-то подобное, поэтому я не буду тратить на это много времени.
И дальше мы с вами погрузимся в очень большой демонстрационный пример, который будет заключаться в построении нашего первого приложения. У нас только 10 недель на изучение iOS. Это очень короткий промежуток времени для изучения такой супер мощной системы.

Что мы будем изучать в этом курсе?

Читать далее

Адаптивные SplitViewController и Popover для iOS 9. (Swift). Часть 1

Screen Shot 2015-12-02 at 9.32.13 PM
Screen Shot 2015-12-02 at 9.35.24 PM
Проводя адаптацию предыдущего стэнфордского курса «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 мы должны решить три вопроса:

  1. создать адаптивный интерфейс в iOS 9 на основе концепции Size Classes
  2. обеспечить сохранение данных в Core Data и работу с ними UI приложения
  3. осуществлять подачку данных с сервера Flickr в фоновом режиме

В этом посте решается первая задача, а именно, — создание адаптивного интерфейса со  SplitViewController и Popover.

Читать далее

Задание 5. Top Places (Objective-C + iOS 9). CS 193P iOS 7 2014. Адаптивный UI. Обязательные пункты 6 -12.

Screen Shot 2016-02-08 at 1.43.20 PM
Начало решения Задания 5 (обязательные пункты 1 — 5) находится в посте.
Здесь представлено продолжение выполнения Задания 5 (обязательные пункты 6 — 12).
Текст Домашнего задания на английском языке доступен на  iTunes в пункте  “Developing iOS 7 app:Assignment 5″
На русском языке 

Задание 5 Top Places fall 2013.pdf


Задание выполнялось в 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.

Screen Shot 2016-02-08 at 1.26.59 PM

Содержание

Цель задания — создать приложение, которое показывает пользователю список наиболее популярных мест на Земле, в которых сделаны фотографии и размещены на сервисе Flickr, а также дает возможность просмотра этих фотографий. Это Задание преследует следующие методические задачи:  вы должны научиться работать с Table Views, Scroll Views, Image View и многопоточностью, узнать, как строить универсальные приложения, которые работают на любых как  iPhone, так и на iPad (с соответствующим UI на каждом).
Все данные, которые вам необходимы, будут загружаться с Flickr.com c использованием API Flickr. Вам будет предоставлен код для создания URLs запросов к Flickr, которые понадобятся в этом домашнем задании.

Текст Домашнего задания на английском языке доступен на  iTunes в пункте  “Developing iOS 7 app:Assignment 5″
На русском языке 

Задание 5 Top Places fall 2013.pdf

Задание выполнялось в 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.

Screen Shot 2016-01-25 at 11.38.41 AM

Концепция построения адаптивного пользовательского интерфейса начиная с 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)

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

Стэнфордский курс CS193P (iOS9, Swift) осень 2015 не планируется размещать на iTunes?

Стэнфордский курс  CS193P: «iPhone and iPad Application Programming», который сегодня, 4 декабря, закончился для студентов Стэнфорда, и исходя из традиций прошлых лет, уже должен быть выложен на iTunes, там не появится в ближайшее время. Этим курсом интересуются во всем мире, все его ждали с нетерпением и на Quora был задан вопрос: «Когда курс CS193P: «iPhone and iPad Application Programming» 2015-2016 появится на iTunes?».

Читать далее