Наш форум переезжает на Piazza

Уважаемые пользователи сайта bestkora.com.

Наш форум переезжает на Piazza! Обсуждение стэнфордских курсов CS193P по разработке iOS приложений на Swift (iOS 7, iOS 8, iOS 9 и будущего iOS10) мы будем проводить на  Piazza — том же инструменте, на котором профессор Пол Хэгерти проводит обсуждение со своими студентами. Чем быстрее вы начнете спрашивать на  Piazza вопросы по лекциям, демонстрационным примерам и заданиям стэнфордского курса CS193P, тем быстрее вы почувствуете преимущество накопленных здесь знаний ваших коллег и инструкторов. Вместо того, чтобы посылать email, вы можете послать свой вопрос на  Piazza и ваши коллеги и я постараемся ответить на него. Мы приветствуем любые ваши вопросы по тем направлениям разработки iOS приложений на Swift, над которыми вы работаете — даже если они заданы анонимно.
Я постараюсь постепенно перенести наиболее интересные вопросы с нашего старого форума на  Piazza.

Вы можете зарегистрироваться на новом форуме по ссылке, при этом надо указать private код курса mf141.

Задание 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

Дополнение к Лекции 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. У Вас может быть совсем другая логика построения этих игр.

Читать далее