Контекст: В нашем приложении у нас есть UITabBarController
в качестве корня, а затем каждый контроллер представления вкладок помещается в выделенный UINavigationController
. Мы добавили совершенно новую пользовательскую анимацию перехода pop / push ко всем UINavigationController
в нашем приложении.
Issue : Всякий раз, когда мы нажимаем контроллер представления, который имеет hidesBottomBarWhenPushed = true
, после его нажатия мы видим, что UINavigationController
размер представления уменьшается на высоту панели вкладок. Переходя к другим вкладкам, мы видим, что эти вкладки также были затронуты - они также имеют уменьшенную высоту. Это означает, что проблема заключается в самом UITabBarController
. По какой-то причине он решает вычесть высоту панели вкладок из доступной высоты для своих дочерних элементов, что влияет на расположение UINavigationController
и его дочерних элементов (см. Скриншоты ниже).
1. Исходное состояние, прежде чем любые контроллеры представления будут помещены в стек навигации.
2. Вид контроллера, который скрывает панель вкладок, нажат.
3. Контроллер вида, который скрывает панель вкладок, выскочил.
Конфигурация root UITabBarController
:
Конфигурация UINavigationController
, используемая в качестве корня вкладки:
Наблюдения:
Вышеупомянутый эффект существует даже тогда, когда сложность сводится к голым костям - никакие пользовательские классы не используются, а анимация перехода просто изменяет горизонтальное положение видов.
Мы попытались включить Under Opaque Bars
для UINavigationController
, но в этом случае высота вида уменьшается не на высоту UITabBar
, а на высоту нижней безопасной зоны (34 балла).
Мы совершенно заблудились и были бы чрезвычайно благодарны за любые идеи по этому вопросу.