Лекция 15 CS193P Fall 2017 — Alerts и Action Sheet, Notifications & KVO, «жизненный цикл» приложения.

В Лекции 15 освещаются 3 темы:

  • Экстренные сообщения Alerts и списки действий Action Sheets
  • Уведомления Notifications («радиостанции») и KVO
  • “Жизненный цикл” приложения (UIApplication, AppDelegate, Info.plist, Capabilities)

Читать далее

Лекция 14 CS193P Fall 2017 — Еще о Documents, Демонстрационный пример Persistence (постоянное хранение) и Documents.

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

  • первая меньшая часть является продолжением теоретической части, связанной с UIDocument и начатой на Лекции 13. Она посвящена UIDocumentBrowserViewController , прекрасному и очень мощному интерфейсу в вашем собственном приложении для создания файлов, перемещения файлов, удаления файлов, размещения их в папках, перетаскивания файлов с iCloud Drive на локальный жесткий диск.
  • вторая  часть — это огромный демонстрационный пример, охватывающий тему постоянного хранению (persistence) и тему создания приложений, ориентированных на работу с документами, на основе UIDocument и браузера документов UIDocumentBrowserViewController.

Читать далее

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

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

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

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

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

Читать далее

Лекция 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, а в остальном это абсолютно то же самое.

Читать далее

Лекция 11 CS193P Fall 2017 — Drag&Drop, таблица Table View и коллекция Collection View.

Лекция 11 посвящена двум  темам: механизму Drag & Drop, который представляет собой способ разделения (sharing) информации между различными приложениями, а также таблице Table View и коллекции Collection View, которые обеспечивают отображение информации неограниченного объема.

Первая часть Лекции 11 посвящена механизму Drag & Drop. Этот механизм особенно важен в iOS 11, потому что в этой операционной системе у iPad есть прекрасные многозадачные возможности одновременного размещения на экране двух приложений, которые могут  успешно использовать механизм Drag & Drop. При выполнении Drag&Drop механизм multi-touch (множества прикосновений) и multi-fingers (множество пальцев) позволяют достичь феноменального эффекта при взаимодействии с экраном. Вы можете находиться в середине процесса перетаскивания (Drag) и сказать: “Так, я хочу добавить еще некоторые вещи к этому перетаскиванию.” Для этого вам достаточно “тапнуть” на этих вещах, и они добавятся к вашему перетаскиванию (Drag) .

Читать далее

Задание 3 Stanford CS 193P Fall 2017. Графическая игра Set. Решение обязательных пунктов.

Содержание

Цель этого задания — в получении опыта создания своих собственных пользовательских (custom) view, включая управление пользовательскими жестами.
Начните свой код с Задания 2.
Текст Домашнего задания на английском языке доступен на  iTunes в пункте “Programming: Project 3:Graphical Set″. На русском языке вы можете скачать Задание 3 здесь:

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

Начинаем выполнять с кода Задания 2.

Правила игры Set:

SET INSTRUCTIONS - RUSSIAN.pdf

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

Мое решение Задания 3 состоит из основного приложения Set III NoExtra и вспомогательного SetCard для отдельной карты, они находятся на Github  для iOS 11 и на Github для iOS 12.

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

1. Ваше приложение должно продолжать играть в соло версию игры Set, как это требовалось в Задании 2.

2. В этой версии не нужно ограничивать пользовательский интерфейс (UI) фиксированным числом карт. Вы всегда должны быть готовы к тому, что могут быть сданы еще 3 карты с помощью кнопки “Deal 3 More Cards”. Если карт в колоде больше не осталось, то кнопка “Deal 3 More Cards” исчезает.

3. Не “отводите заранее” место для максимально возможного количества карт — 81. В любое заданное время карты должны иметь настолько возможно большой размер, насколько это позволит отведенное для них место на экране и количество карт, находящихся в игре. Другими словами, когда игра начинается (только с 12 -ю картами), карты будут реально большими, но по мере все большего количества карт на экране (благодаря кнопке “Deal 3 More Cards”), они будут становиться все меньше и меньше для того, чтобы соответствовать размеру игрового поля.

4. В конце игры, когда обнаружены 3 совпавшие карты и больше нет Set карт в колоде, совпавшие карты должны быть полностью убраны и оставшиеся карты должны “пере-формироваться”, чтобы использовать освободившиеся покинувшими игру картами пространство экрана с экрана (то есть стать опять немного больше, если это позволит размер игровой области на экране).

Читать далее

Лекция 9 CS193P Fall 2017 — «Жизненный цикл» View Controller и Scroll View.

В Лекции 9 рассматриваются две важных темы :

  • «жизненный цикл» View Controller,
  • Scroll View

“Жизненный цикл” View Controller — это  как View Controller рождается, живет, делает много интересных дел и затем умирает. Профессор подробно рассказывает нам о всех этапах жизни View Controller и о том, какие сообщения посылает ему система на протяжении его «жизненного цикла».  Он начинает с момента создания View Controller, затем следует подготовка View Controller для того случая, когда к этому View Controller кто-то “переезжает”  (segue). Следующий этап — установка ваших outlets, затем ваш View Controller появляется  на экране и может исчезнуть, и может опять появиться, и опять исчезнуть.  Затем его геометрия может быть изменена, например, при автоматическом вращении устройства.

Он не просто перечисляет такие методы «жизненного цикла» View Controller, как viewDidLoadviewWillAppearviewWillTransitionToSize и другие, но также очень подробно рассказывает о том, в каких ситуациях их нужно применять, а в каких воздержаться от их использования. Особое внимание уделяется тому, где следует стартовать такие затратные по времени задачи, как загрузка изображения из интернета.

Читать далее

Лекция 8 CS193P Fall 2017 — Animation (Анимация).

Сделав небольшой обзор различных типов анимации в iOS на прошлой Лекции 7, в  Лекции 8 профессор фокусируется на 3-х механизмах анимации views (UIViews):

  1. анимации свойств UIView с помощью аниматора UIViewPropertyAnimator
  2. переходах ( transition(with:)) между различными views 
  3. динамическом аниматоре Dynamic Animator, построенном на физике

Читать далее

Лекция 7 CS193P Fall 2017 — Multiple MVCs, Timer, and Animation (Множественные MVCs, Таймер и Анимация).

В Лекции 7 представлена подробная теоретическая и практическая часть такой большой темы как «Множественные MVCs«. Сначала подробно на конкретных приложениях рассматриваются принципы функционирования 3-х поставляемых Apple множественных MVCsTabBarController, SplitViewController и NavigationController. Наибольшее внимание уделено самому гибкому и мощному из всех множественных MVCs — NavigationController, который представляется в виде “стопки карт”, где каждая карта — это отдельный MVC. NavigationController позволяет вам положить конкретный MVC на самый верх “стопки карт”, загораживая все остальные карты, которые находятся ниже. Но это так сказать внешняя сторона функционирования множественных MVCs, которой они обращены к пользователю.

Читать далее

Лекция 6 CS193P Fall 2017 — Multitouch ( жесты).

В Лекции 6 продолжается рассмотрение гигантского демонстрационного примера, в котором с помощью игральной карты PlayingCardView рассказывается о том, что можно делать с пользовательскими (custom) views:

  • Создание пользовательского subclass UIView
  • Рисование с помощью Core Graphics и UIBezierPath
  • Режим contentMode у UIView (то есть перерисовка redraw против масштабирования битов при изменении границ bounds)
  • Рисование с прозрачностью
  • Больше ключей для словаря строки с атрибутами NSAttributedStringUIFont и NSParagraphStyle
  • UIFontMetrics масштабирование  шрифтов определенного стиля согласное c пользовательскими настройками (Setting) в Larger Text 
  • Управление subviews в вашем пользовательском UIView
  • Использование isHidden
  • Аффинные преобразования CGAffineTransform UIView
  • Приоритеты ограничений (Constraint Priority) в системе Autolayout
  • Assets.xcassets и рисование с помощью UIImage
  • @IBDesignable и @IBInspectable
  • Отображение изображений UIImage в Interface Builder

Читать далее