更改UIViewController self.view框架

时间:2012-05-03 10:01:58

标签: objective-c ios uiview uiviewcontroller

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

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

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

  • 使用点表示法和setter将XIB视图调整为适当的帧大小(0,0,320,416)。

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

但它不起作用。有什么建议吗?

2 个答案:

答案 0 :(得分:16)

viewWillAppear

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

答案 1 :(得分:1)

只想添加一点。改变UIViewController视图的原因在viewDidLoad中不起作用是因为调用[window makeKeyAndVisible],通常在viewDidLoad之后调用。此调用将更改window.rootViewController的帧以等于窗口的帧。您可以通过更改UIViewController的view.frame [window makeKeyAndVisible]来测试这一点,并且更改将会坚持。

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

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