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メインビューに追加するサブビューを作成して初期化するのに適した場所です。メインビューをさらにカスタマイズするのにも適しています。また、データ構造を初期化するのにも適しています。これは、呼び出されるまでにViewControllerでプロパティが設定されている必要があるためです。これは通常、 1回だけ実行する必要があります。

viewWillLayoutSubviews必要に応じて、サブビューを配置およびレイアウトする場所です。これは、回転またはその他のイベントによってビューコントローラのビューのサイズが変更された後に呼び出されます。これは、ViewControllerの存続期間中に度も発生する可能性があります。ここではビューのみをレイアウトする必要があります。

于 2012-11-20T03:42:46.757 に答える