Лекция 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, которой они обращены к пользователю.

Читать далее

С вами играет iPhone. Задание 2 Stanford CS 193P Fall 2017. Игра Set. Решение дополнительных пунктов.

Это продолжение решения Задания 2. Здесь мы рассмотрим решение некоторых дополнительных пунктов.

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

Текст Домашнего задания на английском языке доступен на  iTunes в пункте “Programming: Project 2: Set″. На русском языке вы можете скачать текст Задания 2 здесь:

Задание 2 Игра Set iOS 11.pdf

Для решения Задания 2 необходимо ознакомиться с Лекциями 1 — 6.
Решение обязательных пунктов Задания 2 находится на Github для iOS 11 и на Github для iOS 12 в папке «Set II No Extra«.
Решение обязательных и дополнительных пунктов Задания 2 находится на Github для iOS 11 и на Github для iOS 12 в папке «Set II With Extra«.

Мы будем рассматривать выполнение дополнительных пунктов немного не в том порядке, как они представлены в тексте Задания 2, так как они частично уже описаны либо в решениях Задания № 1, либо в посте, посвященном выполнению обязательных пунктов Задания № 2. Мы сосредоточимся на выполнении самого интересного 4-го дополнительного пункта этого Задания, в котором необходимо предоставить пользователю играть напару с iPhone.

Читать далее

Лекция 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

Читать далее

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

Содержание

Цель задания состоит в том, чтобы дать вам возможность создать свое первое приложение полностью с “нуля” и самостоятельно. Оно достаточно похоже на Задание 1, которое помогло обрести вам уверенность, но достаточно отличающееся, чтобы дать вам полную свободу для накопления опыта!

Текст Домашнего задания на английском языке доступен на  iTunes в пункте “Programming: Project 2: Set″. На русском языке вы можете прочитать текст Задания 2 здесь:, а скачать здесь:

Задание 2 Игра Set iOS 11.pdf

Начинаем выполнять Задание 2 c NewProject в Xcode.

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

SET INSTRUCTIONS - RUSSIAN.pdf

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

Решение данного Задания 2 находится на Github для iOS 11 и на Github для iOS 12.

ОБСУЖДЕНИЕ МАТЕРИАЛОВ курса «Разработка iOS приложений с Swift» проводится на private форуме на Piazza. Делиться своими решениями и задавать вопросы можно там.
Для регистрации вам необходимо пройти по ссылке:
http://piazza.com/moscow_physical_engineering_institute_bestkora.com/spring2017/mf141
и набрать private  код mf141.

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

1. Реализуйте игру Set в версии соло (для одного игрока).

2. Разместите на экране по крайней мере 24 карты игры Set. В Set все карты всегда лежат “лицом” вверх.

 

Читать далее

Лекция 5 CS193P Fall 2017 — Рисование в iOS.

В начале Лекции 5 рассматриваются небольшие темы :

  • Обработка ошибок в Swift
  • Использование Any  в Swift
  • «Кастинг типа» с помощью оператора as?
  • Другие интересные классы: NSObject, NSNumber, Date, Data

Но основная тема Лекции 5 — это views. Профессор сразу вводит уточнения в терминологию.  Он использует слово «view«в двух контекстах. Один из них — это >MVC. Буква V предназначена для View. В этом контексте View означает множество обобщенных (generic) миньонов вашего Controller. Этот View с заглавной буквойV в слове “View”, содержит множество views. Это именно те views, которым посвящена большая часть Лекции 5 и которые являются subclasses класса UIView в iOS.

views — это прямоугольные области на экране, в которых мы рисуем и получаем от пользователя так называемые “жесты прикосновения” (touch gestures), как одинарные, так и множественные. Но на Лекции 4 ведется разговор только о рисовании, управление жестами перенесено в Лекцию 6. Никогда раньше в своих курсах Пол Хэгарти не уделял столько внимания рисованию Views. Возможно, это связано с тем, что компактность кода и богатство синтаксических конструкций Swift позволяют представить рисование как увлекательный и очень интеллектуальный процесс.

Читать далее

Лекция 4 CS193P Fall 2017 — Еще больше Swift.

Лекция 4 в основном теоретическая с небольшими демонстрационными примерами, рассеянными по всей Лекции и показывающими те или иные возможности Swift в действии. Это заключительная (дальше будет изучение iOS) и наиболее трудная Лекция, посвященная Swift. Но где еще вы можете увидеть такое концентрированное, логичное и понятное объяснение таких продвинутых возможностей Swift, как «множественное наследование» функциональности через протоколы protocols?

Читать далее

Задание 1 Stanford CS 193P Fall 2017. Игра Концентрация. Решение.

Содержание

Цель задания состоит в воспроизведении демонстрационного примера, представленного на Лекции, и в небольшом его усовершенствовании. Очень важно, чтобы вы понимали, что вы делаете на каждом шаге воспроизведения демонстрационного примера, тем самым подготовив себя к расширению возможностей игры Концентрация.

Текст Домашнего задания на английском языке доступен на  iTunes в пункте “Programming: Project 1: Concentration″. На русском языке вы можете прочитать текст Задания 1 здесь:, а скачать здесь:

Задание 1 Игра Концентрация iOS 11.pdf

Начинаем выполнять Задание 1 с кода, полученного в конце Лекции 2. Профессор настоятельно рекомендует не копировать код первых 2-х Лекций, а непосредственно печатать его в Xcode, так как это даст хороший опыт освоения среды разработки Xcode 9.

Читать далее

Лекция 3 CS193P Fall 2017 — Swift.

В Лекции 3 подробно рассказывается о возможностях Swift и не только.

Вот повестка дня Лекции 3 :

  • Autolayout тизер
  • Краткий обзор того, что мы изучили в Concentration
  • CountableRange чисел с плавающей точкой
  • Кортежи Tuples
  • Вычисляемые свойства (Computed Properties)
  • Управление доступом (access control)
  • assertions ( утверждения)
  • extensions ( расширения)
  • enum (перечисление)
  • Optionals— это enums
  • Обзор структур данных (включая управление памятью)

Читать далее