Iphone UIView更改大小

Iphone UIView更改大小,iphone,uiview,uiviewcontroller,Iphone,Uiview,Uiviewcontroller,我在loadview中创建了一个视图,如下所示: - (void)loadView { UIView *mainView = [[UIView alloc] initWithFrame:[UIApplication sharedApplication].keyWindow.bounds]; self.view = mainView; [mainView release]; } 因此,如果我打印视图,我得到的结果是: > 好的,这就是我想要的,767x1024 问题是,如果我调用此方法: [[U

我在loadview中创建了一个视图,如下所示:

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

因此,如果我打印视图,我得到的结果是: > 好的,这就是我想要的,767x1024

问题是,如果我调用此方法:

[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide];
并显示一个modalViewController,然后将其关闭,在我以前的视图控制器上,打印ViewDidDisplay和ViewWillDisplay方法我得到以下结果:

视图将显示:

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

[<UIView: 0x4e946a0; frame = (0 0; 768 1004); layer = <CALayer: 0x4e946d0>>]
[]
为什么视图大小会改变20?我知道这和状态栏有关,但我想不出来


谢谢。

你说得对。状态栏默认大小为20像素高。UIViewController会在状态栏出现时自动调整子视图大小。根据苹果的文档,“当视图控制器显示在屏幕上时,其根视图通常会调整大小以适应可用空间,这可能会根据窗口的当前方向和其他界面元素(如状态栏)的存在而有所不同。”——

你说得对。状态栏默认大小为20像素高。UIViewController会在状态栏出现时自动调整子视图大小。根据苹果的文档“当视图控制器显示在屏幕上时,其根视图通常会调整大小以适应可用空间,这可能会根据窗口的当前方向和其他界面元素(如状态栏)的存在而有所不同。”——

Hmm,我用“self.wantsFullScreenLayout=YES”修复了这个问题,我修正了“self.wantsFullScreenLayout=YES