5

我注意到有时在 viewDidLoad 上我的视图大小是正确的。有时我不会。

例如

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.pullToRefreshController = [self.pullToRefreshController initWithDelegate:self];
    PO(self.view);
    PO(self.view.superview);
    PO(self.view.superview.superview);
    PO(self.view.superview.superview.superview);

    while(false);
}
-(void)viewWillLayoutSubviews
{
    PO(self.view);
    PO(self.view.superview);
    PO(self.view.superview.superview);
    PO(self.view.superview.superview.superview);
    while (false);
}

在 viewDidLoad 处 self.view 的大小仍然是 320 到 480。在已修复的 viewWillLayoutSubviews 处。

我想知道两者之间会发生什么,我应该在哪里初始化东西?或者 viewDidLoad 中应该包含哪些内容,viewWillLayoutSubviews 中应该包含哪些内容?

4

1 回答 1

9

viewDidLoad是创建和初始化要添加到主视图的子视图的好地方。这也是进一步自定义主视图的好地方。它也是初始化数据结构的好地方,因为在调用它时应该已经在视图控制器上设置了任何属性。这通常只需要执行一次

viewWillLayoutSubviews如果需要,您可以在其中定位和布局子视图。这将在旋转或其他事件导致视图控制器的视图被调整大小后调用。这可能在视图控制器的生命周期中发生多次。您应该只在此处布局视图。

于 2012-11-20T03:42:46.757 回答