2012-01-09 111 views
0

在我的应用程序中,我开发了一个向导,其中我为用户提供了一种逐一设置其详细信息的方法。完成所有步骤后,用户将被重定向到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]; 

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

回答

-1

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

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

这不适用于不同的设备,外形因素。 – Barry 2014-08-06 19:18:42

0

如果您使用的故事板,选择每个选项卡VC和清除框View Controller>Extend Edges>Under Bottom Bars

+0

这是投了票,但我不知道为什么。它为我工作(Xcode 8)。 – Brett 2016-11-20 18:29:44

2

在我而言,(状态栏/导航栏/隐藏的TabBar)这个工作

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

但是巴里的答案是更好,如果你用故事板,但我不能为这个VC。 试过iOs7和iOs 8.

相关问题