2012-02-20 78 views
0

我有一个选项卡控制器,其中包含一个导航控制器,其中又包含一个视图控制器。视图控制器显示一个标签栏和一个导航栏。查看屏幕外

在这个视图控制器我想添加一个全屏视图(隐藏标签栏和导航栏,但离开状态栏),这是在加载过程中显示。我有子类的UIView,并成立了一个笔尖文件中的布局被装载到这样的观点:

- (id)initWithFrame:(CGRect)frame 
{ 
    if (self = [super initWithFrame:frame]) 
    { 
     // Load nib 
     self = [[[NSBundle mainBundle] loadNibNamed:@"FrontpageCountdownView" owner:self options:nil] objectAtIndex:0]; 
    } 
} 

我的视图控制器中添加这个观点是这样的:

// Hide tab bar and navigation bar 
self.tabBarController.tabBar.hidden = YES; 
self.navigationController.navigationBar.hidden = YES; 

// Add loading (frontpage countdown) view 
CGRect frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height); 
NFFrontpageCountdownView *countdownView = [[NFFrontpageCountdownView alloc] initWithFrame:frame]; 
[self.view addSubview:countdownView]; 

在我的笔尖的看法大小为460(全屏,减去状态栏)。我的问题是,当我将它添加到视图控制器时,它显得“更大”。 我会认为,由于视图的大小为460,它应该在将视图添加到视图控制器时显示整个视图,但它不显示底部。尽管它是460像素,但它看起来太大了。

有人可以告诉我这是为什么吗?

My view in Interface Builder

编辑

我的观点看起来如何在Interface Builder:

My view in Interface Builder

如何我的观点看在模拟器:

My view in the simulator

+0

如果您记录“框架”尺寸,您会得到什么值? – Mutix 2012-02-20 09:52:14

+0

如果我登录'frame',我得到'320.000000 x 460.000000在0.000000; 0.000000'。我已经更新了我的问题,以显示Interface Builder中的视图与它在模拟器中的外观之间的区别。 – simonbs 2012-02-20 12:03:03

+0

我想你必须设置下面一行'view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; ' – pmk 2012-02-20 12:14:35

回答

0

使用self.tabBarController.tabBar.hidden = YES隐藏标签栏时会发生这种情况。

相反,您应该隐藏它,然后扩展tabBarController的视图。

CGRect tabBarFrame = self.tabBarController.view.frame; 
tabBarFrame.size.height += self.tabBarController.tabBar.frame.size.height; 
self.tabBarController.view.frame = tabBarFrame; 
self.tabBarController.tabBar.hidden = YES;