更改UIViewController self.view框架

我试图显示一个viewController xib视图,其视图显示在一个固定的标题横幅(0,0,320,44),这是一个imageView添加在应用程序窗口。

这是因为我需要它在导航多个视图控制器时粘在屏幕上。 这是我正在做的项目的一个要求。

到目前为止我已经尝试过:

  • resize的XIB视图到适当的帧大小(0,0,320,416),都用点符号和设置。

  • 使用self.view.frame = CGRectMake(0,44,320,416)更改viewDidLoad中的框架;

但它不工作。 任何build议?

viewWillAppear设置框架

 - (void)viewWillAppear:(BOOL)animated { self.view.frame = CGRectMake(0, 44, 320, 416); [super viewWillAppear:animated]; } 

只是想添加更多。 更改UIViewController视图的原因在viewDidLoad不起作用,因为调用[window makeKeyAndVisible] ,通常在viewDidLoad之后调用该[window makeKeyAndVisible] 。 这个调用将改变window.rootViewController的框架等于窗口的框架。 您可以通过更改UIViewController的view.frame AFTER [window makeKeyAndVisible]来testing这一点,并且更改将会保持不变。

viewWillAppearviewDidAppear[window makeKeyAndVisible]被调用,但在视图的框架被调整后。

需要注意的是,只有最上面的控制器是rootViewController ,其视图的框架会自动更改。 这不会影响附加到rootViewController任何rootViewController