В Лекции 7 представлена подробная теоретическая и практическая часть такой большой темы как «Множественные MVCs«. Сначала подробно на конкретных приложениях рассматриваются принципы функционирования 3-х поставляемых Apple множественных MVCs: TabBarController, 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 необходимо ознакомиться с Лекциями 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)
- Рисование с прозрачностью
- Больше ключей для словаря строки с атрибутами NSAttributedString … UIFont и 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 c New → Project в Xcode.
Правила игры Set:
Для решения Задания 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 с кода, полученного в конце Лекции 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
- Обзор структур данных (включая управление памятью)
Лекция 2 CS193P Fall 2017 — MVC.
В Лекции 2 профессор подробно с картинками объясняет использование паттерна MVC для разработки iOS приложений.
Затем следует продолжение разработки демонстрационной игры Концентрация, начатой на прошлой лекции. Происходит разделение кода Модели и кода, обслуживающего View Controller. Появляется новый класс class Concentration и новая структура struct Card, которые представляют лагерь Модели. Возможно, вы привыкли использовать структуры struct в других языках и думаете о них, как о маленькой коллекции других переменных. В Swift структура struct — это “гражданин” первого класса, очень похожий на класс class. У класса class и структуры struct много отличий, но самых главных два:
- Классы class имеют наследование (inheritance), а структуры struct — нет.
- Классы class ”живут” в “куче”, и у вас есть на них указатели. Классы class используют стиль передачи по ссылке reference types. Структуры struct НЕ ”живут” в “куче” и передаются повсюду путем их копирования (точнее с использованием механизма copy-on-write). Мы называем этот стиль передачи value types.
Профессор рассказывает, как проектировать Модель, отталкиваясь от ее public API. На очень коротких фрагментах кода показано, как исходя из семантического содержания Optional, можно легко и просто построить всю логику игры Концентрация, как использовать преимущества механизма copy-on-write (COW), действующего в структурах struct.
Как синхронизировать Модель и View Controller.
Лекция 1 CS193P Fall 2017 — Введение в iOS 11, Xcode 9 и Swift 4. Часть 2.
На сайте представлен полный неавторизованный хронометрированный конспект Лекции 1 на русском языке курса “Разработка iOS 11 приложений с помощью Swift 4”.
Первая часть — 0 — 50 минута находится здесь,
Вторая часть — 50 — 82 минута — находится в этом посте.
Код демонстрационного примера для Лекции 1 находится на Github для iOS 11 и на Github для iOS 12 в папке Concentration L1.
——— ПРОДОЛЖЕНИЕ КОНСПЕКТА ——————-
——- 50 -ая минута лекции ———
Но метод touchCard вызывается ОБЕИМИ картами:
И в этом проблема.
Почему так произошло? Это произошло из-за того, что я копировал (⌘C Copy) и вставлял (⌘V Paste) карту с “привидением” ? для создания второй карты. При проведении операции копирования и вставки происходит копирование всех методов. Это очень распространенная ошибка, которую очень легко сделать.
Конечно, я намеренно создал новую карту копированием, чтобы показать вам, как избавиться от вышеупомянутой ошибки.
Для этого вам нужно кликнуть правой клавишей “мышки” (или CTRL -кликнуть) на элементе UI, и он вам покажет все свои связи (connections).
Давайте CTRL -кликнем на карте с “тыквой” ?: Читать далее