UISplitView with UITabbar

∥☆過路亽.° 提交于 2019-11-27 21:22:22

I subclassed UISplitViewController and added the line below to viewDidLoad and that fixed the grey line.

self.extendedLayoutIncludesOpaqueBars = YES;

I believe I have found an alternative solution for you. I have had the exact same problem, mostly because we are both doing something against Apple's Guidelines which is having a SplitViewController nested within a Tabbar controller (SplitView should be the root view). This was okay in iOS 5/6, but now in iOS 7 there are far too many side effects to achieve this.

The reason you see your view stretch completely when you set the bar to be translucent is because the bar is NOT taken into account when drawing the view. When you set translucent to false, it is then taken into account of the view and you will see that grey bar there because that's your view pretending there's a tabbar at the bottom of the screen.

And as always, a SplitViewcontroller's height cannot be changed, as it is determined by the visible window height.

I tried everything you did and then some. The real solution came from using a third-party Split View Controller.

I recommend switching over to https://github.com/mattgemmell/MGSplitViewController . This split view controller is actually one large View with container views living inside of it. Because of this, you avoid all the side effects of putting an actual split view controller within a tab bar.

If that doesn't float your boat, you could create your own solution which follows the same idea of having one UIViewController with two container views contained in it, though the people behind MGSplitViewController did a good job of that already.

This was the only way I was able to solve this issue, let me know if you find an alternative.

Instead of creating a subclass for UISplitViewController, I just added this code on my master's viewDidLoad:

self.splitViewController?.extendedLayoutIncludesOpaqueBars = true

For the controller that is the detail view of UISplitViewController you just do this:

-(UITabBarController*)tabBarController{
    return nil;
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!