根据tabbarcontroller调整视图控制器的大小

时间:2012-01-09 11:42:06

标签: view uiviewcontroller uitabbarcontroller tabbar

在我的应用程序中,我开发了一个向导,我在其中为用户提供了逐个设置其详细信息的方法。完成所有步骤后,用户将被重定向到TabBar将进入图片的屏幕。

这里的问题是用户可以使用向导(没有TabBar控制器)和正常流程(使用tabbar控制器)访问相同的视图控制器。在向导中,我使用的是大小为320x480的视图控制器,并且在正常流程中使用相同的视图控制器。但每当我使用TabBar加载任何视图控制器时,底部的44像素视图会隐藏在TabBar后面。

我知道我可以通过检测TabBar是否存在来手动设置视图大小,但在这种情况下,视图控制器的数量更多,并且其设计尺寸为320x480。

我曾尝试使用Apple的文档中给出的所有方法,但似乎没有一个方法适用于我。

以下是我尝试过的方法,以及一些xib设置。

[self setWantsFullScreenLayout:YES];
self.view.autoresizingMask = UIViewAutoresizingFlexibleHeight;
[self.view setAutoresizesSubviews:YES];
[self.navigationController.view setNeedsLayout];

有没有办法根据TabBar是否存在来设置视图控制器的高度?

3 个答案:

答案 0 :(得分:2)

在我的情况下,(状态栏/导航栏/隐藏标签栏)可以使用

//Add this in your ViewController
self.edgesForExtendedLayout = UIRectEdgeBottom;
self.extendedLayoutIncludesOpaqueBars = YES;

然而,如果你使用Storyboard,Barry的回答会更好,但我不能为这个VC做准备。 试过iOs7和iOs 8。

答案 1 :(得分:0)

如果您正在使用情节提要,请选择每个标签VC并清除View Controller>框。 Extend Edges> Under Bottom Bars

答案 2 :(得分:-1)

我无法为此找到一个好的答案,所以我最终添加了一个BOOL,hasTabBar。我根据创建视图的位置将其设置为true或false,并使用它来计算我的布局。

frame.size.height -= (hasTabBar*50); // works nicely.