Ios 在情节提要中的选项卡栏下添加视图

Ios 在情节提要中的选项卡栏下添加视图,ios,objective-c,storyboard,uitabbarcontroller,Ios,Objective C,Storyboard,Uitabbarcontroller,我想知道是否有一种方法(最好是一种简单的方法)可以在选项卡栏下添加视图,如所附图片所示,以便在我在选项卡之间切换时以及在每个选项卡上按下/弹出新的视图控制器时,视图都会停留在选项卡栏下 我将UITabBarController子类化为“MainTabController”,并将is设置为我的故事板中主选项卡栏控制器场景的自定义类。然后在MainTabController的viewDidLoad中,我向上移动选项卡栏并添加红色子视图。到目前为止还不错,但是主视图区域的大小仍然和以前一样,选项卡栏位

我想知道是否有一种方法(最好是一种简单的方法)可以在选项卡栏下添加视图,如所附图片所示,以便在我在选项卡之间切换时以及在每个选项卡上按下/弹出新的视图控制器时,视图都会停留在选项卡栏下

我将UITabBarController子类化为“MainTabController”,并将is设置为我的故事板中主选项卡栏控制器场景的自定义类。然后在MainTabController的viewDidLoad中,我向上移动选项卡栏并添加红色子视图。到目前为止还不错,但是主视图区域的大小仍然和以前一样,选项卡栏位于底部,所以现在表的最后几个元素保持在选项卡栏下方

我非常希望避免为我推入的每个选项卡中的每个控制器调整帧大小,因此我希望有一个我不知道的更简单的解决方案


您可以通过将选项卡栏控制器嵌入自定义容器控制器来实现这一点。通过将UIViewController设置为初始视图控制器并向其添加容器视图,可以在故事板中执行此操作。调整容器视图的大小,使其下面有您需要的任何空间,并在该空间中添加视图。删除自动嵌入到容器视图中的视图控制器,并控制从容器视图到选项卡栏控制器的拖动,然后选择“嵌入”

请注意,在iOS 7中,选项卡栏控制器布局视图的方式存在缺陷。如果将视图放置在其中一个控制器的底部附近,它将在您第一次看到它时显示,但当您选择另一个选项卡时,它将在选项卡栏下向下移动,然后再次返回(如果您旋转到横向,然后再返回,它将重新显示)。通过使容器视图控制器(我的故事板中的初始控制器)成为选项卡栏控制器的委托,并添加以下代码,可以绕过此错误

-(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];
}

您可以在特定高度使用带有单独UIAbbar的UIViewController,并在下面创建条形图。要更改每个选项卡的控制器,可以使用子控制器。不太简单,但可行。