[iOS] AutoLayout使用時の注意点

問題

AutoLayoutを指定した場合、frame/boundsが決定されるのは、viewWillAppearの後。

起こる問題

  • StoryBoardでAutoLayoutを設定したViewのframeをViewDidLoadで取得しても、期待した値が取れない

対策

ViewWillLayoutSubViews以降で処理を行う

注意点

ViewWillLayoutSubViewsは至る所で呼ばれるため、
単にViewの初期化処理をしたい場合は、1度だけ呼ばれるように工夫する。

実装例

[Swift] viewDidLayoutSubviewsで初回だけ処理をしたい
問題 AutoLayoutを使用した場合、Frameが決定されるのがviewWillAppear後のため、 初期化処理をviewDidLayoutSubviewsに記載する必要がある。 しかし、viewDidLayoutSubviewsは何度も呼ばれるメソッドのため、 普通に書くと何度も呼ばれてしまう。 対処法 lazyを使う...

参考

AutoLayout使用時のviewのframe確定のタイミング | Xランカー
初めてのサイト構築~初めてのiOSアプリ作成 作業記録