5

重複の可能性:
UIViewController が無効なフレームを返しますか?

viewDidLoadデバッグ中に、呼び出し中のビュー フレームがorigin=(x=0, y=20) size=(width=320, height=460)正確ではないことに気付きました。呼び出しでは、ナビゲーション バーの高さを考慮viewWillAppearして、正しく設定されています。origin=(x=0, y=0) size=(width=320, height=416)サブビューのレイアウトはルート ビューに依存しますが、ビューが表示されるたびに設定したくありません。

この 2 つの呼び出しにどのように対処すればよいでしょうか。

4

1 に答える 1

6

ビューのレイアウトを処理する適切な場所はUIViewController viewWillLayoutSubviewsメソッドです。これは、最初に表示されたときや回転したときなど、View Controller のビューのサイズが変更されるたびに呼び出されます。

ご覧のとおり、View Controller のビューは、呼び出された時点ではまだ完全にサイズ変更されていませんviewDidLoad

iOS 4.3 をサポートする必要がある場合はviewWillLayoutSubviews、5.0 で追加されたため使用できません。この場合、 でレイアウトを行いviewWillAppear:ます。

于 2012-12-19T17:23:04.617 に答える