Skip to content

VKEducation/ios-itmo-2020-assignment-4-template

Repository files navigation

TopBarController

Предпосылки

UIKit содержит UITabBarController. Как и в случае с таблицей, которую мы имплементировали в предыдущим задании, это очень мощный и удобный инструмент для создания интерфейсов. Но он имеет свои ограничения. Например панель с выбором экранов находится снизу и не может быть перемещена. Нам же нужно отображать подобную панель сверху экрана.

Исходные данные

Приложение инициализирует TopBarController с набором контент-контроллеров и отображает его на весь экран. Контроллеры покрашены в разные цвета, для того, чтобы их различать.

В UIViewController добавлено свойство var topBarItem: TopBarItem, которое содержит в себе два поля - текст и иконку. Их следует использовать в имплементации TopBarController для отображения кнопки показа конкретного контроллера. Все контент-контроллеры, с которыми создается TopBarController содержат ненулевые topBarItem.

Логику работы и интерфейс можно посмотреть в приложенном видео.

Задание

Основное:

  • При загрузке добавить все контроллеры из инициализатора как детей, показывать первый контроллер.
  • Показывать бар сверху с кнопками, на которых отображены иконки и тексты из свойства topBarItem контроллеров, по нажатию на кнопку менять отображаемого ребенка на правильного.
  • Дизайном можно пренебречь.
  • Методы жизненного цикла контроллера должны вызываться корректно.

Дополнительное:

  • Сделать дизайн близкий к тому, что есть в видео.

Подсказки

  • Декомпозируйте код, например, было бы удобно иметь отдельный класс TopBar, который бы отвечал за отображение кнопок, TopBarButton, который бы отвечал за отдельную кнопку и т.д.
  • Для обработки нажатий можно отлично подойдет способ с UIControl из лекции.
  • Решайте задачу итерационно. Сначала научите показывать первый контроллер, игнорируя существование других контроллеров. После этого приступайте к логике показа разных.
  • Для реализации эффекта мутного стекла обратите внимание на UIVisualEffectView.
  • Для закругленных краёв можно использовать view.layer.cornerRadius. Комбинируя это свойство с view.clipToBounds можно получить круг.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages