【iPhoneアプリ開発】ビューのサイズが変わるタイミング viewDidLayoutSubviews!

【iPhoneアプリ開発】ビューのサイズが変わるタイミング。viewDidLoad? viewWillAppear?それとも…な時

iOSアプリでの画面表示の以下の流れはご存じの通りですね。

viewDidLoad

viewWillAppear

viewDidAppear

AutoLayoutやAutoResizeをボタン等のビューに設定している場合、
viewDidLoadでビューのサイズを取得しようとすると、
AutoLayout等が適用される前のビューのサイズになってしまいます。

そのため、
適用後のサイズはviewWillAppearで取得すれば大丈夫、と先週くらいまで思っていました。

が!
特定の条件で、viewWillAppearの中なのに適用前のサイズしか取得できないということが最近起こりました。

なんだこれは!!

と思いました。
試しにviewDidAppearでサイズを取得したら、適用後のサイズになったのですが、
画面が表示された後にサイズを調整するとユーザーにその動きが丸見えだったのでボツ:(

viewWillAppearとviewDidAppearの間に何か無いんすか!Googleさん!

と探していたら求めていた答えが見つかりました。

viewDidLayoutSubviews

です。

 -(void)viewDidLayoutSubviews
 {
     //この中に色々書く
 }

この中でもう一度サイズを取得して、ビューのフレームを変えたら完全に解決しました。

viewDidLoadとviewWillAppearに加えてviewDidLayoutSubviews、このトリオがいればiOSアプリ開発、怖くないですね。

では。

by 芦野輝明
twitter→https://twitter.com/teriyakiegg

Xcode

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です