在故事板中的标签栏下添加一个视图

我想知道是否有一种方法(最好是一个简单的)添加一个视图下的标签栏,如附图所示,以便它留在那里,当我切换标签之间,当新的视图控制器被推/ /popup每个标签。

我已经将UITabBarController分类为“MainTabController”,并将其设置为我的故事板中主选项卡栏控制器场景的自定义类。 然后在MainTabController的viewDidLoad中,我将tabBar向上移动并添加红色子视图。 到目前为止这么好,但主视图区域的大小仍然像以前一样,标签栏在底部,所以现在桌子的最后几个元素停留在标签栏的下方。

我非常想避免调整每个控制器的帧大小,因为我希望有一个我不知道的更简单的解决scheme。

它应该是什么样子

您可以通过将标签栏控制器embedded到自定义容器控制器中来执行此操作。 你可以在故事板中做一个UIViewController的初始视图控制器,并添加一个容器视图。 调整容器视图的大小,使其具有所需的任何空间,并在该空间中添加视图。 删除自动embedded到容器视图中的视图控制器,并控制从容器视图拖到标签栏控制器,然后select“embedded”。

在这里输入图像说明

请注意,标签栏控制器在iOS 7中布置其视图的方式存在一个错误。如果您将视图放置在其中一个控制器的底部附近,则会在第一次看到它时显示,但会在标签栏下移动当你select另一个标签,然后再次回来(如果你旋转到横向,然后再回来,它会重新出现)。 您可以通过使您的容器视图控制器(我的故事板中的初始控制器)选项卡栏控制器的代表,并添加此代码来解决此错误。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // called by the embed segue UITabBarController *tbc = segue.destinationViewController; tbc.delegate = self; } -(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { [tabBarController.view setNeedsLayout]; }