iPhone - 带标签栏控制器的应用程序 - 显示顶部的差距

时间:2011-10-11 12:45:46

标签: iphone ios uitabbarcontroller

我有一个接受用户名和密码的登录视图。验证成功后,我将呈现一个视图控制器,其中包含带有3个选项卡的标签栏视图(IBOutlet)。每个标签栏视图控制器都有导航控制器(但在任何视图控制器中都没有表视图)。使用xib,我添加了标签栏控制器对象,然后在标签栏树下添加了导航控制器,并相应地为3个导航控制器添加了视图控制器。 验证成功后,我正在打电话 [self presentViewController:myViewController animated:YES] 这是它的展示方式。

Screen shot

在myViewController的viewDidLoad中,我按如下方式添加标签栏:

- (void)viewDidLoad {
    [super viewDidLoad];
    [self.view addSubview:self.tabBarController.view];  
}

为什么在导航栏上方和状态栏下方看到差距。由于这个间隙,底部的标签栏正在切割.......

2 个答案:

答案 0 :(得分:5)

这是一个常见的问题,tabBarController和其他Controller默认情况下其框架中的状态栏协调解决此问题,只需将视图的边界设置为tabBarController视图的框架。

tabBarController.view.frame = self.view.bounds;

答案 1 :(得分:0)

self.view.bounds未准确定位的情况下。以下对我有帮助。

self.view.frame = [[UIScreen mainScreen] bounds];
CGRect cgp = self.view.bounds;
[self.tabBarController.view setFrame:cgp];

在另一种情况下(iOS 7)tabBar隐藏在屏幕的底部。在这种情况下

self.view.frame = [[UIScreen mainScreen] bounds];
CGRect cgp = self.view.bounds;
if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) {
    cgp.size.height = cgp.size.height-90;
}
[self.tabBarController.view setFrame:cgp];