1

viewdidloadで私はこのコードを持っています:

[methodPanes setContentSize:CGSizeMake(numberOfPages*methodPanes.frame.size.width, 100)];

メソッドペインは、の幅を基準にして設定されますself.view

問題は、iPadとNSLogmethodPanes.frame.size.widthに横向きの形式からビューをロードすると、 648が表示されることです(これは明らかに間違っています)。

methodPanes.frame.size.width次に、ボタンをクリックすると、ビューが表示されたらNSLogsに戻ります。これは現在924です(もっと似ています)。

何らかの理由で、scrollviewが648幅で読み込まれ、ビュー幅に自動サイズ変更されていると想定しています(iPadを回転させたときに適切にサイズ変更するには、UIViewAutoresizingFlexibleWidthに設定されています)。

私の問題は、methodPanesスクロールビューコンテンツのコンテンツサイズがである必要があることnumberOfPages x its frame widthですが、viewDidLoadでは、methodPanesフレーム幅のサイズが間違っています。つまり、コンテンツサイズが小さすぎて、すべてのコンテンツが表示されません。

だから.....どうすればこれを解決できますか?すべてのUIコンポーネントが読み込まれ、移動が停止した後に実行される関数はありますか?または、methodPanesを「チェック」して幅が変化するかどうかを確認し、それに応じてコンテンツサイズを調整することはできますか?

ありがとう

4

1 に答える 1

4

実行ループの実行を許可した後、幅を取得します。それまでに、ビューの寸法が向きに合わせて更新されます。通常はこれで十分です。

- (void)adjustContentSize {
    [methodPanes setContentSize:CGSizeMake(numberOfPages*methodPanes.frame.size.width, 100)];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    [self performSelector:@selector(adjustContentSize) withObject:nil afterDelay:0.0];
}
于 2011-03-01T09:04:34.073 に答える