GithubHelp home page GithubHelp logo

iosui-diplom's Introduction

Курсовой проект «Интерфейс приложения»

В качестве курсового проекта вы разработаете приложение «Трекер полезных привычек». Вы примените полученные знания:

  • адаптивная вёрстка экранов;

  • различные навигационные паттерны в iOS;

  • использование и настройка визуальных компонентов;

  • использование UITableView, UICollectionView и кастомных ячеек.

Требования к проекту

  • Проект должен запускаться без ошибок.
  • Для вёрстки используется Auto Layout.
  • Вёрстка приложения реализована либо в коде, либо в Interface Builder.
  • Вёрстка приложения адаптивная, интерфейс выглядит хорошо на различных устройствах, в том числе на iPad.
  • Код проекта написан в одном стиле. Обратите внимание на названия классов, переменных и функций.

Работа с данными

Для того, чтобы создавать, сохранять и получать добавленные привычки, нужно использовать файл HabitsStore.swift. Он содержит два класса:

  • класс Habit позволяет сохранять и обновлять данные для одной привычки: название, цвет, время выполнения и т.д.;

  • класс HabitsStore позволяет сохранять и получать сохранённые привычки. Для использования HabitsStore в разных модулях приложения нужно использовать HabitsStore.shared свойство, например:

    let store = HabitsStore.shared
    print(store.habits) // распечатает список добавленных привычек

Привычки, добавленные в HabitsStore, сохраняются между перезапусками приложения автоматически.

Классы Habit и HabitsStore содержат все данные, необходимые для отображения в приложении. Внимательно изучите интерфейсы этих классов и документацию перед работой над проектом.

Работа с дизайном

Макеты всех экранов находятся в Figma. Все стили текста и цвета приложения располагаются на отдельном слое UI Kit. В реализации навигации приложения вам поможет интерактивный прототип.

Реализация проекта

С помощью приложения «Трекер полезных привычек» пользователи смогут добавлять полезные привычки и следить за прогрессом их выполнения.

Создание проекта

  1. Создайте iOS-проект и назовите его MyHabits, добавьте поддержку iPad.
  2. Добавьте иконку приложения и обновите LaunchScreen согласно макетам.
  3. Добавьте класс HabitsStore.swift.
  4. Проверьте, что проект собирается без ошибок.

Добавление базовой навигации

  1. Добавьте таб бар с двумя контроллерами:
  • HabitsViewController для отображения привычек,

  • InfoViewController для отображения информации о привычках.

Вёрстку самих экранов нужно будет сделать в следующих шагах.

  1. На экране HabitsViewController добавьте кнопку «Добавить» согласно макетам.

Добавление экрана с информацией

  1. На экран InfoViewController добавить информацию о привычках согласно макетам. Если текст не влезает на экран, он должен скроллиться.

  2. Весь контент на экране должен скроллиться.

Добавление новой привычки

  1. Добавьте экран HabitViewController с вёрсткой согласно макетам.

  2. При нажатии на кнопку «Добавить» на экране HabitsViewController должен модально открываться HabitViewController.

    Не создавайте UINavigationBar программно. Используйте UINavigationController для отображения навигейшн бара.

  3. При нажатии на цветной круг должен открываться UIColorPickerViewController. Когда пользователь выбирает цвет, кружок должен отображать новый выбранный цвет. При следующем показе UIColorPickerController в нём должен быть выбран текущий цвет.

  4. При нажатии на кнопку «Создать» нужно создать новый экземпляр класса Habit и сохранить его в HabitsStore, например:

let newHabit = Habit(name: "Выпить стакан воды перед завтраком",
                     date: Date(),
                     color: .systemRed)
let store = HabitsStore.shared
store.habits.append(newHabit)

Для сохранения данных о привычке нужно использовать свойства, которые пользователь задал с помощью элементов интерфейса: UITextField, UIView с заданным backgroundColor, UIDatePicker.

  1. После сохранения новой привычки экран HabitViewController должен закрываться.

Список добавленных привычек

  1. На экран HabitsViewController добавьте UICollectionView, которая должна показывать:
  • ячейку ProgressCollectionViewCell, которая показывает прогресс за сегодняшний день. Данные для отображения можно получить из свойства HabitsStore.shared.todayProgress;

  • ячейки HabitCollectionViewCell для показа добавленных привычек. Данные о привычках можно получить из свойства HabitsStore.shared.habits.

  1. Цветной круг в ячейке привычки показывает, была ли она сегодня затрекана. При нажатии на круг должно измениться его состояние — заливка цветом и иконка галочки. Также нужно сохранить время привычки с помощью функции HabitsStore.shared.track(). Каждый день можно добавить только одно время для одной привычки. Проверить это условие можно с помощью свойства isAlreadyTakenToday.
  2. Прогресс в ProgressCollectionViewCell должен всегда показывать актуальное состояние и обновляться при добавлении времени любой привычки.
  3. После добавления новой привычки и закрытия HabitViewController новая привычка должна появляться в списке.

Показ данных о выбранной привычке

  1. Добавьте HabitDetailsViewController с вёрсткой согласно макетам. Список нужно сделать с помощью UITableView. Данные для списка можно получить из свойства HabitsStore.shared.dates. Для того, чтобы показать, была ли привычка затрекана в дату из списка, нужно использовать функцию HabitsStore.shared.habit(_:isTrackedIn:).

Редактирование и удаление добавленной привычки

  1. При нажатии на кнопку «Править» на экране HabitDetailsViewController должен показываться экран HabitViewController с заполненной информацией о выбранной привычке.

  2. Пользователь может менять данные, при нажатии на кнопку «Сохранить» экран также должен закрываться, но в HabitsStore не должно появляться новой привычки, нужно обновить данные выбранной привычки. При изменении названия привычки на экране HabitDetailsViewController должно показываться актуальное название.

  3. При нажатии на кнопку «Отменить» экран HabitViewController должен закрываться. Изменённые данные привычки не должны быть сохранены, даже если пользователь изменял данные на экране.

  4. Внизу экрана HabitViewController должна отображаться кнопка «Удалить привычку». Кнопка должна отображаться, только если мы редактируем ранее добавленную привычку.

  5. При нажатии на кнопку нужно показать UIAlertController со следующими параметрами:

  • заголовок «Удалить привычку»;
  • сообщение «Вы хотите удалить привычку "название выбранной привычки"?»;
  • два Alert Actions:
    • «Отмена», который закрывает UIAlertController;
    • «Удалить», при нажатии на который привычка удаляется из HabitsStore, экраны HabitViewController и HabitDetailsViewController закрываются и привычка пропадает из списка на экране MyHabitsViewController.

Отправка работы на проверку

Чтобы отправить работу на проверку, загрузите репозиторий на Github.

Как правильно задавать вопросы дипломному руководителю

Что поможет решить большинство частых проблем

  1. Перед началом работы над проектом необходимо договориться с дипломным руководителем о том, как вы будете сдавать работу на проверку: частями или полностью, файлом или через PR, а также обсудить все вопросы, чтобы не было недопонимания в будущем.
  2. При возникновении вопросов попробовать найти ответ сначала самому в интернете. Умение искать ответы пригодится вам в профессиональной деятельности. После самостоятельного поиска можно спрашивать руководителя.
  3. Если вопросов больше одного, то присылайте их в виде нумерованного списка. Так дипломному руководителю будет проще отвечать на каждый из них.
  4. При необходимости прикрепите к вопросу скриншоты и стрелочкой покажите, где не получается. Программу для этого можно скачать здесь.
  5. Распределяйте нагрузку, планируйте время на обучение и начинайте работу над дипломом как можно раньше, чтобы у вас было больше времени на правки и доработку проекта.

Что может стать источником проблем

  1. Вопросы вида «Ничего не работает, не запускается, всё сломалось». Руководитель не сможет ответить на такой вопрос без дополнительных уточнений. Цените своё время и время других.
  2. Откладывание диплома на последний момент.
  3. Ожидание моментального ответа на свой вопрос. Руководители — действующие разработчики, которые кроме преподавания занимаются рабочими проектами. Их время ограничено, поэтому постарайтесь задавать правильные вопросы, чтобы получать быстрые ответы.

iosui-diplom's People

Contributors

amosyagina avatar aoovcharenko avatar artemnovichkov avatar daddyursa avatar eleshvili avatar straivi avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.