奇怪的UIViewController hidesBottomBarWhenPushed布局错误,仅在第一次按下视图控制器时发生

时间:2018-08-06 19:47:02

标签: ios cocoa-touch uiviewcontroller uikit uitabbarcontroller

我真的很茫然,尤其是考虑到它以前运行良好,而且我在提交中找不到任何会破坏它的东西。

我有一个UITabBarController作为UISplitViewController的主视图。 UITabBarController中的每个选项卡都有其自己的UINavigationController,该UINavigationController管理一堆子VC。

问题是,将hidesBottomBarWhenPushed设置为true的任何子VC都会导致故障过渡,但只会在第一次出现 any UINavigationController推送时出现。

Here is a video of the transition bug

如您所见,安全区域似乎在过渡时崩溃了(实际上,在没有底部safeAreaInset的iPad或任何其他iPhone上不会发生这种情况。但是,在第二次(以及所有后续)推送中,它的表现也很好。

我唯一能想到的是,我正在实现UISplitViewControllerDelegate方法,以确保在iPhone上显示详细信息序列是作为推送而不是模式出现的。但是,定期推送(完全绕过委托方法)仍然会发生此问题。

各种视图控制器都是标准基类,没有覆盖的布局行为,并且我没有实现任何自定义过渡或过渡协调器。

任何关于此问题可能的想法将不胜感激。

1 个答案:

答案 0 :(得分:0)

所以我设法修复了它。在UITabBarController出现在屏幕上之前,我正在执行模态搜索。显然,这弄乱了布局,因为我能够通过最少的复制来确认。将segue呈现类型更改为“全屏显示”而不是“默认”可以阻止将底层UITabBarController从视图层次结构中移除并解决问题。

虽然这是我一生的六个小时,但我永远都不会回来,希望它对以后的人有所帮助。