Objective c 界面生成器:从NIB调整视图大小

Objective c 界面生成器:从NIB调整视图大小,objective-c,cocoa-touch,uiview,uiviewcontroller,interface-builder,Objective C,Cocoa Touch,Uiview,Uiviewcontroller,Interface Builder,我有一个自定义UIViewController和一个nib文件中的相应视图。视图将直接添加到UIWindow中 [window addSubview:customViewController.view]; 窗口和视图的大小为默认值(480x320和460x320) 当我在nib文件中创建CustomViewController并选中IB属性选项卡中的“从nib调整视图大小”时,一切正常 但是,当我使用initWithNibName消息以编程方式创建CustomViewController时,视

我有一个自定义UIViewController和一个nib文件中的相应视图。视图将直接添加到UIWindow中

[window addSubview:customViewController.view];
窗口和视图的大小为默认值(480x320460x320

当我在nib文件中创建CustomViewController并选中IB属性选项卡中的“从nib调整视图大小”时,一切正常

但是,当我使用initWithNibName消息以编程方式创建CustomViewController时,视图未正确定位在窗口上。底部有一条空条纹。它的高度是20px。我知道这是因为状态栏偏移

IB通过“从NIB调整视图大小”处理该问题如何以编程方式模拟它?


IB似乎使用了UIViewController的一些自定义子类。所以问题是:如何实现“从NIB调整视图大小”当我想确保视图覆盖整个屏幕时,我会这样做:

- (void) viewWillAppear: (BOOL) animated
{
    [super viewWillAppear:animated];
    [[self view] setFrame:[[UIScreen mainScreen] bounds]];
}

感觉像是一个黑客,所以我只是在万不得已的情况下才这么做,当我无法让视图做出其他行为时:)

尝试过,但对我来说不起作用。底部出现相同的条纹。[[self-view]setFrame:CGRectMake(0,20,320,480)];这是可行的,但看起来像某种硬编码。[[UIScreen mainScreen]bounds]]返回(0,0320480)。您应该改用applicationFrame:self.view.frame={CGPointZero[UIScreen mainScreen].applicationFrame.size]};这对我也不管用!设置此选项后,它会恢复!