Неверный размер UINavigationController (вложенный в UITabBarController), после всплывающей операции - PullRequest
2 голосов
/ 14 июня 2019

Контекст: В нашем приложении у нас есть UITabBarController в качестве корня, а затем каждый контроллер представления вкладок помещается в выделенный UINavigationController. Мы добавили совершенно новую пользовательскую анимацию перехода pop / push ко всем UINavigationController в нашем приложении.

Issue : Всякий раз, когда мы нажимаем контроллер представления, который имеет hidesBottomBarWhenPushed = true, после его нажатия мы видим, что UINavigationController размер представления уменьшается на высоту панели вкладок. Переходя к другим вкладкам, мы видим, что эти вкладки также были затронуты - они также имеют уменьшенную высоту. Это означает, что проблема заключается в самом UITabBarController. По какой-то причине он решает вычесть высоту панели вкладок из доступной высоты для своих дочерних элементов, что влияет на расположение UINavigationController и его дочерних элементов (см. Скриншоты ниже).

1. Исходное состояние, прежде чем любые контроллеры представления будут помещены в стек навигации. enter image description here

2. Вид контроллера, который скрывает панель вкладок, нажат. enter image description here

3. Контроллер вида, который скрывает панель вкладок, выскочил. enter image description here

Конфигурация root UITabBarController:

enter image description here

Конфигурация UINavigationController, используемая в качестве корня вкладки:

enter image description here

Наблюдения:

  • Вышеупомянутый эффект существует даже тогда, когда сложность сводится к голым костям - никакие пользовательские классы не используются, а анимация перехода просто изменяет горизонтальное положение видов.

  • Мы попытались включить Under Opaque Bars для UINavigationController, но в этом случае высота вида уменьшается не на высоту UITabBar, а на высоту нижней безопасной зоны (34 балла).

Мы совершенно заблудились и были бы чрезвычайно благодарны за любые идеи по этому вопросу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...