2011-04-25 95 views
1

我有我创造了这样的一个的loadView观点:的UIView大小的改变

- (void)loadView { 
UIView *mainView = [[UIView alloc] initWithFrame:[UIApplication sharedApplication].keyWindow.bounds]; 
self.view = mainView; 
[mainView release]; 

}

所以,如果我打印的观点我得到的结果是: > OK,这就是我想要的,767x1024

的问题是,如果我把这个方法:

[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide]; 

并呈现modalViewController,然后关闭它,我以前的观点控制器上,打印viewDidAppear和viewWillAppear中我得到这个方法:

viewWillAppear中:

[<UIView: 0x4e946a0; frame = (0 0; 768 1024); layer = <CALayer: 0x4e946d0>>] 

viewDidAppear:

[<UIView: 0x4e946a0; frame = (0 0; 768 1004); layer = <CALayer: 0x4e946d0>>] 

为什么视图大小正在改变20?我知道这与状态栏有关,但无法弄清楚。

谢谢。

回答

1

你说得对。状态栏的默认大小是20像素的高度。当状态栏出现时,UIViewController会自动调整子视图的大小。根据苹果文档“当视图控制器显示在屏幕上时,其根视图通常会调整大小以适应可用空间,这可以根据窗口的当前方向和其他界面元素(如状态栏)的不同而有所不同。” - http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html

+0

嗯,我用“self.wantsFullScreenLayout = YES;”固定 – John 2011-04-25 20:18:28