Closed mikheevshow closed 5 years ago
Описание общих принципов.
Мы делаем кастомный tabBar на основе класса UIView и хотим интегрировать его в существующий UITabBarController.
Зачем это нужно? Так как стандартная реализация панели вкладок не разрешает сильную Кастомизацию в том числе изменение разметки. Вывод, нужно строить свой велосипед. Готовых решений в интернете найдено не было (а я ищу хорошо). Нечто подобное я видел только в Яндекс Навигаторе. Поэтому наша работа в этом направлении может стать вполне оригинальной и быть хорошей основой для написания какой-нибудь статьи.
Как реализуется управление стандартной панелью вкладок?
Каждый экземпляр UIViewController имеет хранимое свойство
var tabBarItem: UITabBar!
В классе UITabBarController имеется свойство:
var tabBar: UITabBar!
Так же в UITabBarController имеется метод:
setViewControllers(viewControllers: [UIViewControllers]?, animated: Bool)
Когда мы используем этот метод для добавления контроллеров представления, внутри этого метода происходит чтение поля tabBarItem данных контроллеров и добавление их в массив кнопок поля tabBar UITabBarController
Задача сводится к реализации аналогичной функциональности для нового tabBar
Сделать кастомный tabBar
(Готово)
Присобачить его к UITabBarController(Готово)
Наладить связь между items в UITabBar и кастомным баром(Перенесено в другую задачу) ~~Сделать хорошие constraints, чтобы в горизонтальном режиме, кастомный бар становился вертикальным, а кнопки сохраняли свою ориентацию относительно силы гравитации~~
(Готово)
Сделать так, чтобы бар был адаптивен к экранам различных iPhone.