使用UITabbar的UISplitView

时间:2013-09-24 11:37:26

标签: ios objective-c uitabbarcontroller uisplitviewcontroller ios7

我有一个我似乎无法解决的奇怪问题。我目前正在努力将我的应用更新到iOS7。这一切都在iOS6中有效。它是一个通用应用程序,因此使用相同的xib文件。然而,iPad在某些上使用了UISplitViews。就像我说的,这一切都适用于iOS6哦,这一切都适用于iPhone。

问题是底部是灰色条。我将标签栏更改为不透明以正确移动视图,因为我将一些UI剪切到视图底部并且位于标签栏下方,在那里进行了侧移。但是,如果我将它设置回半透明条,它会在下方但正确拉伸。如果我不这样做,它会添加一个条形码。其他标签在不使用splitview时工作正常。

以编程方式添加UISplitviewController。

有关更好的说明,请参阅附图。

The grey bar is between my splitview and tabbar

我试过了:

  • 在splitview上添加了自动调整大小
  • 检查xib以查看拆分视图中的子视图以自动调整大小
  • 试图将splitview强制为屏幕边界
  • 删除所有视图中的边界
  • 删除了自动调整大小的子视图

任何想法都会受到欢迎。

谢谢大家。

更新:

将uisplitview的背景颜色设置为黑色。所以uisplitview肯定会延伸到它。

4 个答案:

答案 0 :(得分:31)

我将UISplitViewController子类化,并将下面的行添加到viewDidLoad并修复了灰线。

self.extendedLayoutIncludesOpaqueBars = YES;

答案 1 :(得分:5)

我相信我已经找到了替代解决方案。我遇到了完全相同的问题,主要是因为我们都在针对Apple的指南做了一些事情,它有一个嵌套在Tabbar控制器中的SplitViewController(SplitView应该是根视图)。这在iOS 5/6中没问题,但现在在iOS 7中有太多的副作用来实现这一点。

当您将条形图设置为半透明时,您看到视图完全拉伸的原因是因为绘制视图时不考虑条形图。当你将半透明设置为false时,它会被考虑在视图中,你会看到那里的灰色条,因为你的视图假装在屏幕底部有一个标签栏。

与往常一样,SplitViewcontroller的高度无法更改,因为它由可见窗口高度决定。

我尝试了你所做的一切,然后是一些。真正的解决方案来自使用第三方拆分视图控制器。

我建议切换到https://github.com/mattgemmell/MGSplitViewController。这个拆分视图控制器实际上是一个大视图,其中包含容器视图。因此,您可以避免将实际拆分视图控制器放在标签栏中的所有副作用。

如果这不会漂浮你的船,你可以创建自己的解决方案,遵循相同的想法,让一个UIViewController包含两个容器视图,虽然MGSplitViewController背后的人已经做得很好。

这是我能够解决这个问题的唯一方法,如果您找到替代方案,请告诉我。

答案 2 :(得分:2)

我没有为UISplitViewController创建子类,而是在我的主人viewDidLoad上添加了此代码:

self.splitViewController?.extendedLayoutIncludesOpaqueBars = true

答案 3 :(得分:0)

对于作为UISplitViewController详细视图的控制器,您只需执行以下操作:

-(UITabBarController*)tabBarController{
    return nil;
}