UITabBarController中的UISplitViewController - SplitView导航栏Glitch / Bug还是我做错了什么?

时间:2017-01-05 01:04:11

标签: ios uitabbarcontroller uisplitviewcontroller

发布结束时的问题

问题:我在UISplitViewController嵌入UITabBarController时发现了UITabBarController的奇怪行为。该设置非常简单,无需任何编码即可重现。创建一个基于StoryBoard的应用程序并将UISplitViewController拖到StoryBoard上,并使其成为初始视图控制器。然后将ITabBarController拖到棋盘上,并将其作为U UISplitViewControllers的项目。将UINavigationController详细信息视图控制器嵌入到UISplitViewController中。最后,将主视图控制器和详细视图控制器的背景颜色设置为显着的颜色。

StoryBoard应如下所示: enter image description here

步骤1:在可以同时显示主人和详细信息的设备上运行应用程序(例如iPad或大屏幕iPhone)。您应该注意到主人没有在条形下延伸,而是UISplitViewController的背景照亮了。 enter image description here

第2步:将屏幕旋转为纵向,以便主人折叠。从侧面滑入以显示主人。此时,两个导航栏都显示正确的背景颜色。 enter image description here

第3步:将屏幕旋转回横向。现在细节具有UISplitViewController的背景,并且主人显示正确的颜色。 enter image description here

结果:

  • 开始时,主人的桌面视图不会在导航栏下方展开。
  • 当且仅当以纵向模式显示主人,然后向后旋转时,glich会发生变化,现在主人在条形下方延伸,细节不再存在。
  • 如果没有以纵向显示主人,您可以根据需要旋转多次而不改变行为
  • 仅在可以同时显示主人和详细信息的设备上发生
  • 只有在UITabBarController
  • 中嵌入{{1}}时才会发生这种情况

问题:

  • 为什么主人和详细信息在导航栏下无法正确扩展?
  • 为什么这只发生在iPad / iPhone Plus上,而不是普通的iPhone上(一切都按照预期完成)?
  • 我可以申请在iPad上运行这项工作吗?
  • 是否有比使用嵌入了主 - 细节流的TabBar更好的设计方法?对我来说,TabBar在我的应用程序中切换不同类型的内容似乎是正确的,我不想在iPad上拥有全宽度的桌面视图。 SplitViewController似乎也是显示我的内容的正确方法......

1 个答案:

答案 0 :(得分:0)

5个月后,仍然没有解决方案。此外,当我在开发另一个应用程序时再次遇到此问题时,我发现2015年的这篇旧帖子也有同样的问题:Navigation bar for split view controller is darker when inside a tab bar controller

所以我猜Apple并没有打算修改自己的控制器,而且开发人员也搞砸了。我们可以在底部显示UITabBar,同时在上面显示具有适当半透明UINavigationBars的UISplitViewController的唯一方法是实现我们自己的容器视图控制器。

我终于解决了这个问题,使用了一个UITabBar,UITabBar固定在底部,同时使用UIViewController包含API来显示/隐藏我的UISplitViewControllers。