AndreyBrsv / educat-ios

ios educat
2 stars 0 forks source link

Фаза 1: Сделать кастомный tabBar #2

Closed mikheevshow closed 5 years ago

mikheevshow commented 5 years ago

Сделать кастомный tabBar

mikheevshow commented 5 years ago

Описание общих принципов.

Мы делаем кастомный tabBar на основе класса UIView и хотим интегрировать его в существующий UITabBarController.

Зачем это нужно? Так как стандартная реализация панели вкладок не разрешает сильную Кастомизацию в том числе изменение разметки. Вывод, нужно строить свой велосипед. Готовых решений в интернете найдено не было (а я ищу хорошо). Нечто подобное я видел только в Яндекс Навигаторе. Поэтому наша работа в этом направлении может стать вполне оригинальной и быть хорошей основой для написания какой-нибудь статьи.

Как реализуется управление стандартной панелью вкладок?

Каждый экземпляр UIViewController имеет хранимое свойство

var tabBarItem: UITabBar! 

В классе UITabBarController имеется свойство:

var tabBar: UITabBar!

Так же в UITabBarController имеется метод:

 setViewControllers(viewControllers: [UIViewControllers]?, animated: Bool)

Когда мы используем этот метод для добавления контроллеров представления, внутри этого метода происходит чтение поля tabBarItem данных контроллеров и добавление их в массив кнопок поля tabBar UITabBarController

Задача сводится к реализации аналогичной функциональности для нового tabBar