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?».

Читать далее

Дополнение к Лекции 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.  Давайте посмотрим, как он был создан.

Читать далее

Stanford CS 193P iOS 7 Лекция 14 — UIApplication, Network Activity Indicator и Maps ( + iOS 9)

Screen Shot 2015-11-15 at 7.04.03 PM
В начале Лекции 14 кратко рассматривается класс приложения UIApplicationУ нашего приложения есть свойство, называемое delegate, которое устанавливается для вас автоматически, и вы получаете объект Application Delegаte, с помощью которого мы можем делать многие глобальные вещи.

Далее изучается одно специальное свойство UIApplication, а именно визуальный индикатором “сетевой” активности — Network Actity Indicator, который является глобальным и булевским. И именно эти две характеристики делают его использование проблематичным в среде с множеством перекрывающихся потоков, использующих сетевые запросы в одно и то же время.

Затем комментируются особенности демонстрационного примера с прошлой лекции, связанного с выборкой данных в фоновом режиме, и продолжает демонстрационный пример Photomania, обеспечивая работу приложения на iPad. Кроме того,  добавляется Popover segue и особенности его работы в Split View. Демонстрируется, как легко можно заимствовать UI из другого приложения путем прямого копирования и вставки элементов пользовательского интерфейса непосредственно на storyboard.

Читать далее

Stanford CS 193P iOS 7 2014 — Задание 4. Графическая игра Set (Objective-C)

Screen Shot 2015-11-09 at 3.50.37 PM

Содержание

Цель задания — создание более приближенных к реальности, улучшенных по внешнему виду версий Set Card и Playing Card игр “на совпадение”. В этом задании вы должны применить ваши новые познания по созданию пользовательских классов UIView и использованию UIDynamicAnimator. Вам придется более плотно познакомиться с механизмом Autolayout, чтобы обеспечить правильное вращение вашего пользовательского интерфейса (UI).

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

На русском языке

Задание 4 Set fall 2013.pdf

 Задание выполнялось в Xcode 7 iOS 9. Режимы «Use Auto Layout» и «Use Size classes» в этом Домашнем задании включены.

Код Задания 4 находится на Github. Ниже представлен мой вариант решения Задания 4. У Вас может быть совсем другая логика построения этих игр.

Читать далее

Stanford CS 193P iOS 7 2014 — Задание 3. Set. (Objective-C)

 Screen Shot 2015-11-02 at 7.31.19 PM

Содержание

Цель задания — улучшить решение, полученное в Задании 2. К вашей игре Matchismo “на совпадение” с игральными картами  вы должны добавить вторую карточную игру, Set. При этом нужно продемонстрировать прием полиморфизма объектно-ориентированного программирования для разделения большей части кода с вашей карточной игрой “на совпадение” с игральными картами Matchismo. Кроме того, вы должны продемонстрировать использование segues и Navigation Controller для показа истории “совпадений” и “несовпадений” карт.

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

На русском языке

Задание 3 Set fall 2013.pdf

 Задание выполнялось в Xcode 7 iOS 9. Режим «Size classes» в этом Домашнем задании отключен. Кроме того Autolayout также не использовалась, так как набор карт на игральном столе сложно адаптировать к различным размерам экрана с помощью Autolayout. Только использование специальной «сетки» позволит это сделать, что и будет выполнено в Задании 4.

Код Задания 3 находится на Github.

Пункт 1, 4

1. Добавьте новый MVC к вашему решению Matchismo, полученному на прошлой неделе. Новый MVC должен обеспечить простейший вариант карточной игры “на совпадение” Set. Хорошим решением для этого домашнего задания было бы использование приемов объектно-ориентированного программирования для разделения большей части кода с вашей карточной игрой “на совпадение” с игральными картами Playing Card.

4. Используйте  UITabBarController для представления двух игр в вашем UI на различных закладках.  

Читать далее

«Что нового в Swift 2?» на примерах. Часть 2.

Screen Shot 2015-10-28 at 3.18.06 PM

В первой части мы рассмотрели лишь часть новых возможностей Swift 2:

  • фундаментальные конструкции языка, такие, как enumsscoping (область действия), синтаксис аргументов и т.д.
  •  сопоставление с образцом (pattern matching)
  •  управление ошибками (error handling)

Во второй части мы рассмотрим оставшиеся:

  • расширения (extensions) протокола
  • проверка доступности (availability checking)
  • взаимодействие с Objective-C и С

Я буду рассматривать новые возможности Swift 2, сопровождая их примерами, код которых находится на Github.

Читать далее

«Что нового в Swift 2?» на примерах. Часть 1.

Screen Shot 2015-10-28 at 3.18.06 PM
Swift 2 сфокусировался на улучшении самого языка, улучшении взаимодействия с  Objective-C и повышении производительности компилируемых приложений. Новые возможности Swift 2 представлены в 6 различных областях:

  • фундаментальные конструкции языка, такие, как enums, scoping (область действия), синтаксис аргументов и т.д.
  •  сопоставление с образцом (pattern matching)
  • проверка доступности (availability checking)
  • расширения (extensions) протокола
  •  управление ошибками (error handling)
  • взаимодействие с Objective-C

Я буду рассматривать новые возможности Swift 2, сопровождая их примерами, код которых находится на Github.

Читать далее

Лекция 17 CS193P Winter 2015 — Internationalization и Settings

Screen Shot 2015-10-12 at 9.29.49 PM

В Лекции 17  рассматриваются две главные темы:

  1. интернационализация и локализация, которые позволяют использовать ваше приложение во всем мире на различных языках.
  2. добавление UI настроек  приложения в Общие Настройки (Settings) прибора.

Читать далее

Лекция 16 CS193P Winter 2015 — Фотокамера, Постоянное хранение и Вставка Картинки в Картинку (Camera, Persistence and Embed Segues)

Screen Shot 2015-10-07 at 9.11.40 PM

В Лекции 16  рассматриваются три главные темы:

  1. фотокамера, то есть как сделать фотографию и/или видео с помощью фотокамеры и получить их в своем приложении.
  2. постоянное хранение данных больших объемов на iOS устройствах. Это очень важная тема о том, как хранить информацию в вашей флэш памяти на iPhone, iPad и т.д. В Лекции дается обзор различных способов хранения.
  3. вставка картинки в картинку с помощью Embed Segues. Эта технология помогает вам увидеть, что происходит в другом месте, когда вы что-то делаете в данном месте

Читать далее