AutoLayout使用時のviewのframe確定のタイミング
- 2014年01月27日
- iOSアプリ開発
AutoLayoutを使用しているとviewDidLoadの時点では、viewのframeが確定していないそうなのでメモ。
やりたかったのは、uiviewの初期位置を保存しておいて、uiviewを消し、後でその場所に再び表示さるというだけのこと。
なのだが、viewDidLoadの中でuiviewの初期位置を保存しておいて、後でその位置に表示しても同じ位置に復元できなかったのだ。
[iOS6] AutoLayoutを使用すると、viewWillAppear: でframeが決定しないので注意 | Zero4Racer PRO Developer’s Blog
こちらのサイトの情報によると、AutoLayoutを使用しているとviewDidLoad、viewWillAppearではframeが決定されないらしい。
で、どのタイミングでframeが決定しているのかというと、viewDidLayoutSubviewsの中では既に決定しているらしい。
というわけで、AutoLayoutを使用しているときにviewの位置を知りたいときには、viewDidLayoutSubviewsの中で調べるのが正解っぽい。
そもそも今までviewDidLayoutSubviewsというものの存在を知らなかったなぁ。
viewcontrollerにsubviewのレイアウトが完了したことを知らせるメソッドだそうで。