UIKit содержит UITabBarController
. Как и в случае с таблицей, которую мы имплементировали в предыдущим задании, это очень мощный и удобный инструмент для создания интерфейсов. Но он имеет свои ограничения. Например панель с выбором экранов находится снизу и не может быть перемещена. Нам же нужно отображать подобную панель сверху экрана.
Приложение инициализирует TopBarController
с набором контент-контроллеров и отображает его на весь экран. Контроллеры покрашены в разные цвета, для того, чтобы их различать.
В UIViewController добавлено свойство var topBarItem: TopBarItem
, которое содержит в себе два поля - текст и иконку. Их следует использовать в имплементации TopBarController
для отображения кнопки показа конкретного контроллера. Все контент-контроллеры, с которыми создается TopBarController
содержат ненулевые topBarItem
.
Логику работы и интерфейс можно посмотреть в приложенном видео.
Основное:
- При загрузке добавить все контроллеры из инициализатора как детей, показывать первый контроллер.
- Показывать бар сверху с кнопками, на которых отображены иконки и тексты из свойства
topBarItem
контроллеров, по нажатию на кнопку менять отображаемого ребенка на правильного. - Дизайном можно пренебречь.
- Методы жизненного цикла контроллера должны вызываться корректно.
Дополнительное:
- Сделать дизайн близкий к тому, что есть в видео.
- Декомпозируйте код, например, было бы удобно иметь отдельный класс
TopBar
, который бы отвечал за отображение кнопок,TopBarButton
, который бы отвечал за отдельную кнопку и т.д. - Для обработки нажатий можно отлично подойдет способ с
UIControl
из лекции. - Решайте задачу итерационно. Сначала научите показывать первый контроллер, игнорируя существование других контроллеров. После этого приступайте к логике показа разных.
- Для реализации эффекта мутного стекла обратите внимание на
UIVisualEffectView
. - Для закругленных краёв можно использовать
view.layer.cornerRadius
. Комбинируя это свойство сview.clipToBounds
можно получить круг.