我真的对这个感到茫然,特别是考虑到它以前工作正常,而且我在提交中找不到任何会破坏它的东西。
我有一个UITabBarController作为UISplitViewController的主视图。UITabBarController 中的每个选项卡都有自己的 UINavigationController,用于管理子 VC 堆栈。
问题在于,任何将 hidesBottomBarWhenPush 设置为 true 的子 VC 都会导致故障转换,但只有在第一次发生任何 UINavigationController 推送时。
这是过渡错误的视频
如您所见,安全区域似乎在过渡时正在折叠(事实上,这不会发生在iPad或任何其他缺少底部安全AreaInset的iPhone上。然而,在第二次(以及所有后续(推送时,它的行为非常好。
我唯一能想到的是,我正在实现UISplitViewControllerDelegate方法,以确保在iPhone上显示详细信息作为推送而不是模态发生。但是,定期推送(完全绕过委托方法(仍然会出现此问题。
各种视图控制器都是标准基类,没有重写的布局行为,我没有实现任何自定义过渡或过渡协调器。
关于这个问题可能是什么的任何想法将不胜感激。
所以我设法修复了它。在UITabBarController出现在屏幕上之前,我正在执行一个模态segue。显然,这弄乱了布局,因为我能够通过最小复制进行确认。将 segue 表示类型更改为"全屏"而不是"默认"可阻止从视图层次结构中删除基础 UITabBarController 并修复此问题。
虽然那是我生命中的六个小时,但我永远不会回来,我希望它在未来对某人有所帮助。