Лекция 13 CS193P Fall 2017 — Emoji Art Demo, Persistence (постоянное хранение) и Documents.

Лекция 13 состоит из двух неравных частей :

  • первая меньшая часть является продолжением демонстрационного примера Emoji Art в плане работы с текстовым полем UITextField при пополнении коллекции эмоджи Collection View,
  • вторая  часть — чисто теоретическая и посвящена очень важной теме — постоянному хранению (persistence) и работе с документами UIDocument

Продолжение демонстрационного примера Emoji Art и UITextField

Демонстрационный пример заключается в следующем: в приложении Emoji Art, полученном в прошлый раз, создается текстовое поле, которое появляется прямо в нашей небольшой коллекции эмоджи UICollectionView, и с помощью этого текстового поля вы сможете добавлять новые эмоджи в эту коллекцию.

Читать далее

Задание 4 Stanford CS 193P Fall 2017. Анимационная игра Set. Решение обязательных пунктов 1-6.

Содержание

В этом Задании вы добавите анимацию в вашу игру Set и скомбинируете ваши 3 первых Задания в одно.
Текст Домашнего задания на английском языке доступен на  iTunes в пункте “Programming: Project 4: Animayed Set″. На русском языке вы можете скачать Задание 4 здесь:

Задание 4 Игра Графический Set iOS 11.pdf

 Вам необходима реализация Заданий 1- 3. Начинаем выполнять с кода Задания 3.

Для решения Задания 4 необходимо ознакомиться с Лекциями 7 — 10.

Мое решение Задания 4 состоит из двух приложений: анимационной игры Set БЕЗ использования делегата UIDinamicAnimationDelegate динамического аниматора, которая находится в папке Set IV NoExtra, и  анимационной игры Set с использованием делегата UIDinamicAnimationDelegate, которая находится в папке Set IV NoExtra Stasis.

Все это находится на Github для iOS 11 и на Github для iOS 12.

Пункты 1, 2 и 3 обязательные

1. Ваше приложение должно продолжать играть в соло версию игры Set, как это требовалось в Задании 3 (с особенностями, указанными ниже).

2. Вы должны анимировать следующие действия в игре Set:

  • Реорганизация карт. Если карты добавляются или исчезают из игры, то карты должны перемещаться плавно ( не прыгать мгновенно) на их новые позиции.
  • Сдача новых карт. Это включает как сдачу начальных 12 карт, так и сдачу 3-х новых карт в любое время. Карты должны “лететь” через экран из некоторой “колоды”, расположенной где-то на экране. Внешний вид колоды полностью отдается на ваше усмотрение. Никакие две карты не должны сдаваться одновременно, хотя их анимации могут немного перекрываться.
  • Обнаружение совпадения. Все «совпавшие» карты должны “улетать”  с тех мест, где они находились одновременно и начать отскакивать от краев экрана в течение пары секунд прежде, чем собраться в некоторую “стопку сбрасывания”, где-то расположенную на экране. Внешний вид “стопки сбрасывания” полностью отдается на ваше усмотрение.
  • Переворот карт. Карты сдаются “лицевой” стороной вниз до тех пор, пока не достигнут своего местоположения, затем они должны быть перевернуты для проявления содержимого карты игры Set. Для совпавших» карт после того, как они «улетели» в  “стопку сбрасывания”, по крайней мере верхняя карта в этой “стопке сбрасывания” должна лежать “лицевой” стороной вниз.

3. Ваша реализация анимации должна использовать UIViewPropertyAnimator, UIDynamicAnimator и class метод transition(with:…) класса UIView. Возможно, вам понадобиться таймер Timer, но это не строго обязательно.

Читать далее

Лекция 12 CS193P Fall 2017 — Drag&Drop, таблица Table View, коллекция Collection View и текстовое поле Text Field.

Если Лекция 11 представляет собой в основном теоретическую часть, то Лекция 12 является огромным демонстрационным примером, показывающим возможности механизма Drag & Drop, таблицы Table View и коллекции Collection View в действии. Лишь в самом конце Лекции 12 профессор рассматривает пока только теоретически  текстовое поле UITextField, демонстрационный пример для которого по техническим причинам перенесен а Лекцию 13.

Центральной частью Лекции 12 является демонстрирование возможностей коллекции Collection View как двумерного средства размещения информации неограниченного объема с помощью пользовательских (Custom) элементов items, так и настройки коллекции Collection View на двустороннюю работу с механизмом Drag & Drop.

Если на Лекции 11 было показано, как подключить механизм Drop для обычного UIView, то на Лекции 12 все внимание уделено коллекции Collection View, с помощью которой можно не только создавать коллекцию эмоджи, но использовать их с помощью механизма Drag & Drop как для для создания живописных эмоджи шедевров, так и для поиска в Google, например, в другом приложении — Safari.

Профессор показывает, как работает механизм Drag & Drop в “Мире” коллекции Collection View, и это выглядит почти в точности, как и в “Мире” НЕ Collection View. Единственная разница между Drag в “Мире” и  коллекции Collection View состоит в том, что Collection View помогает вам с indexPath элемента коллекции, который вы хотите перетаскивать Drag. Она знает, где находится ваш палец и интерпретирует это как indexPath элемента коллекции, который вы “перетаскиваете” в настоящий момент или как indexPath элемента коллекции, куда вы “бросаете”что-то в данный момент. Так что коллекции Collection View снабжает вас indexPath, а в остальном это абсолютно то же самое.

Читать далее