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

View 根据tabbar控制器调整视图控制器的大小,view,uiviewcontroller,uitabbarcontroller,tabbar,View,Uiviewcontroller,Uitabbarcontroller,Tabbar,在我的应用程序中,我开发了一个向导,在这个向导中,我为用户提供了一种方法来逐个设置他的详细信息。完成所有步骤后,用户将被重定向到屏幕,TabBar将进入图片 这里的问题是,用户可以使用向导(不使用TabBar控制器)和正常流(使用TabBar控制器)访问相同的视图控制器。在向导中,我正在使用大小为320x480的视图控制器,在正常流中也是如此。但每当我使用TabBar加载任何视图控制器时,底部44像素的视图就会隐藏在TabBar后面 我知道我可以通过检测TabBar是否存在来手动设置视图大小,但

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

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

我知道我可以通过检测TabBar是否存在来手动设置视图大小,但在本例中,视图控制器的数量更多,并且已经设计为320x480大小

我尝试过苹果文档中给出的所有方法,但似乎都不适合我

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

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

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

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

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

如果您使用的是故事板,请选择每个选项卡VC并清除底部栏下的
视图控制器
扩展边
框。在我的情况下,(状态栏/Nav栏/隐藏选项卡栏)此操作有效

//Add this in your ViewController
self.edgesForExtendedLayout = UIRectEdgeBottom;
self.extendedLayoutIncludesOpaqueBars = YES;
然而,巴里的答案是更好的,如果你使用故事板,但我不能为这个VC。
试过iOs7和iOs 8。

这被否决了,但我不知道为什么。它对我有用(代码8)。