我有一个接受用户名和密码的登录视图。验证成功后,我将呈现一个视图控制器,其中包含带有3个选项卡的标签栏视图(IBOutlet)。每个标签栏视图控制器都有导航控制器(但在任何视图控制器中都没有表视图)。使用xib,我添加了标签栏控制器对象,然后在标签栏树下添加了导航控制器,并相应地为3个导航控制器添加了视图控制器。
验证成功后,我正在打电话
[self presentViewController:myViewController animated:YES]
这是它的展示方式。
在myViewController的viewDidLoad中,我按如下方式添加标签栏:
- (void)viewDidLoad {
[super viewDidLoad];
[self.view addSubview:self.tabBarController.view];
}
为什么在导航栏上方和状态栏下方看到差距。由于这个间隙,底部的标签栏正在切割.......
答案 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];