【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