Программа курса
"Введение в разработку. Создание приложений с UIKit"

План уроков

  1. ООП, Протоколы, SOLID
  2. Git, Sourcetree
  3. Интерфейс Xcode, Storyboards, Xib
  4. MVC, UIKit, UIViewController, UIView,
  5. UILabel, UIButton, UIImage, UIImageView
  6. Жизненный цикл приложения, контроллера, вью
  7. UITextField, UITextView, UITextFieldDelegate
  8. UIStackView, Constraints, Priorities, ViewHierarhyDebugger
  9. Промежуточные итоги. Причесывание приложения
  10. Keyboard notifications
  11. UISegmentControl, UIImage, UIImageView, UIActivityIndicator
  12. UIScrollView, UITableView, UITableViewDelegate/Datasource
  13. UITableViewCell
  14. UICollectionView, UICollectionViewLayout
  15. TabBar, Navigation
  16. Итоги. Финальная доработка приложения

Мобильное приложение

На уроках последовательно рассматривается создание приложение Quize. В приложении зашиты различные тесты/опросы, которые можно проходить в случайном порядке или последовательно. Прохождение тестов/опросов осуществляется за отведенное время. Результаты игры сохраняются в течении времени работы с приложением. По итогу курса вы научитесь использовать Storyboard для верстки адаптивных приложений, создавать компоненты с индивидуальным дизайном, а также грамотно использовать базовые UI-элементы.
Скриншоты экранов

Домашнии задания

I. Готовим структуру проекта
  1. Создать проект для будущего приложения Quiz (опросник)
  2. Создать модель данных (структуру) для вопроса с полями:
    • Заголовок
    • Варианты ответа (массив)
    • Корректный ответ (или его индекс)
  3. Создать модель данных (структуру) для опроса с полями:
    • Название
    • Вопросы (массив вопросов)
  4. Создать класс для хранения опросов и зашить как минимум один опрос с несколькими вопросами (примеры вопросов можно найти в сети)
II. Подключаем систему контроля версий Git для проекта
  1. Создать удаленный репозиторий c .gitignore и ReadMe.md файлами
  2. Клонировать репозиторий локально
  3. Добавить проект в репозиторий в отдельной feature ветке
  4. Сделать commit и отправить изменения на удаленный репозиторий
  5. Сделать pull request с feature ветки проекта в master (или main) ветку
III. Создаем каркас экранов проекта
  1. В сториборде создать цепочку из экранов:
    • Экран входа
    • Главный экран
    • Экран опроса
  2. Задать идентификаторы для всех экранов
  3. Создать xib и swift файлы для view прогресса (ProgressView)
  4. Настроить связи между xib и swift файлами кастомной view
IV. Структурируем проект по архитектуре MVC
  1. Для каждого экрана сториборда создать классы viewController и view
  2. Связать классы их в коде и в сториборде
  3. Создать пустые классы моделей для каждого экрана
V. Верстаем основные экраны приложения
  1. Добавить заголовок с кнопкой на экран входа. Добавить переход на главный экран по нажатию кнопки
  2. Добавить заголовок и кнопку начала прохождения опроса на главном экране. Добавить переход на экран опроса по нажатию кнопки опроса
  3. Добавить ProgressView на экран опроса
VI. Реализуем логику прохождения опроса
  1. Добавить на экране опроса view карточки вопроса (с заголовком и вариантами ответов в виде кнопок)
  2. При переходе на экран опроса выбираем случайный опрос (если их несколько) и подставляем данные из первого вопроса в карточку вопроса
  3. Создать AlertController и два варианта его вызова при окончании игры (ответил верно на все вопросы либо ответил не верно)
  4. После нажатия на вариант ответа проверяем его корректность и либо отображаем следующий вопрос (если вопросы кончились, отображаем сообщение о выигрыше), либо сообщение о проигрыше
VII. Добавляем игрока в приложение
  1. На экране входа добавить текстовое поле для ввода имени
  2. Запретить начало игры без ввода корректного имени
  3. Передать имя игрока на главный экран для заголовка приветствия
  4. Передать имя игрока на экран опроса для отображения в сообщениях
VIII. Настраиваем поддержку разных устройств
  1. Добавить все элементы главного экрана в stackView, настроить их расположение вверху экрана, над клавиатурой
  2. На главном экране добавить кнопки опросов в stackView (если опрос один, добавить еще несколько опросов в приложение), настроить расположение заголовка приветствия и кнопок на экране
  3. Задать констрейнты для ProgressView на кране опроса, настроить корректное отображение карточки вопроса на разных экранах
IX. Полируем приложение
  1. Добавить изображение на фон для экранов игры
  2. Задать основные цвета приложения и использовать их на экранах
  3. Добавить поддержку темной темы
  4. Добавить таймер на экране опроса для изменения ProgressView
  5. Сбрасывать таймер после ответа и останавливать в конце игры
  6. Добавить завершение игры, если время вышло
X. Поддержка клавиатуры на экране входа
  1. Разместить stackView экрана входа по центру
  2. Добавить подъем stackView при отображении клавиатуры
XI. Улучшаем логику игры
  1. Добавить экран настроек приложения и переход с главного экрана
  2. Добавить переключатель для выбора последовательного или случайного вывода вопросов опроса
  3. Создать глобальное перечисление Settings для хранения настроек приложения (статическое свойство)
  4. Применить настройку на экране опроса (перемешивать вопросы, если выбран случайный порядок)
XII. Добавляем результаты игр
  1. Добавить в приложение модель результата игры с полями:
    • Имя игрока
    • Счет игры
    • Дата и время игры
  2. Добавить в Settings статическое свойство для хранения результатов игр (массив)
  3. На экране опроса реализовать добавление результата после прохождения опроса
  4. Добавить экран результатов (TableViewController) и переход с главного экрана
  5. Добавить на экране результатов отображение сохраненных результатов
XIII. Кастомизируем результаты игры
  1. Добавить xib и swift файлы для ячейки результата, сверстать ее
  2. Использовать кастомную ячейку для отображения результатов игр
XIV. Улучшаем приложение
  1. Заменить stackView опросов на главном экране на TableView
  2. Создать xib и swift файлы для ячейки опроса, сверстать ее и использовать ее в таблице главного экрана
  3. Заменить кнопки вариантов ответов в карточке вопроса на CollectionView
  4. Создать xib и swift файлы для ячейки варианта ответа, сверстать ячейку и использовать для отображения вариантов ответа
  5. Добавить смену дизайна ячейки при выборе варианта ответа
XV. Навигация в приложении
  1. Добавить NavigationController для экрана входа в приложение
  2. Добавить заголовки для каждого экрана
  3. Кнопки настроек и результатов главного экрана перенести в NavigationBar
  4. Поменять отображение всех экранов на полноэкранное
XVI. Финальные штрихи
  1. Проверяем корректность работы приложения, исправляем ошибки
Предпросмотр изображений