デバイスが横向き(Landscape)でアプリが起動した場合、最初の画面を管理するUIViewController派生クラスのメソッドがどういう順番で呼ばれているか調べました。
メソッド呼び出し順
メソッドが呼ばれた時点でのself.interfaceOrientationの状態も()内に示します。- ※1 shouldAutorotateToInterfaceOrientation
- viewDidLoad (Portrait)
- ※1
- viewWillAppear (Portrait)
- ※1
- willRotateToInterfaceOrientation (Portrait)
- ※1
- viewDidApear (Landscape)
- didRotateFromInterfaceOrientation (Landscape)
※1はshouldAutorotateToInterfaceOrientationが呼ばれるタイミング。
ポイント
- 横向きで起動してもPortraitの状態から始まる
- viewDidAppearではすでにinterfaceOrientationに回転後の向きがセットされている
- shouldAutorotateToInterfaceOrientationが随所で呼ばれる
UIScrollViewを使い起動時にoffsetを設定する場合など、縦と横では画面の長さが変わるので、どのタイミングで設定するかは注意が必要です。
1 件のコメント:
どうやらiOS6 だと
didRotateFromInterfaceOrientation (Landscape)
が呼ばれないようになってしまったようです。
コメントを投稿