読者です 読者をやめる 読者になる 読者になる

Life is Really Short, Have Your Life!!

ござ先輩の主に技術的なメモ

AutoLayoutで配置されたViewの実際のFrameを取得する方法

iOS

'`,、('∀`) '`,、 

こんなことで述べ2日も費やしたよシェケナベイベー。あ、画面がローテートした時の話じゃなくて初期化して読み込まれた時の話です。

雷光を与えたくれたのはこちらのエントリ。

ScrollViewなどで、自分のサイズをもとにレイアウトする用途の場合、viewDidLayoutSubviews内で、レイアウトするのが正しいですね。

[iOS6] AutoLayoutを使用すると、viewWillAppear: でframeが決定しないので注意 | Zero4Racer PRO Developer's Blog

なんですって。UIViewControllerのviewWillAppearのframeが決定しないんじゃ、viewDidLoadでチマチマやってもムダじゃねーか。だいたい2日間の苦労を返せ。ということで、ViewControllerの初期化のタイミングでAutoLayoutに基づいた配置を取得したい場合は、viewDidAppearで取得するのが確実です。viewDidLayoutSubviews→viewDidAppearという順番で呼び出されるためだ。

viewDidLayoutSubviewsではないかというと、僕のレイアウトがおかしいのか何故かこのメソッド複数回呼ばれたため・・・。AutoLayout関係の警告は全部潰したのに。これは調べないといけないね。

今日、2年ちょっとぶりにDeveloper Programのライセンス買った。はよActivateこいや。iOSAndroidよりも実機上でのエラーが発生しやすい。シミュレーターでは動くけど実機でランタイムエラーが発生することはザラ。カネ取るくせに何だこのやろう。ばかやろう。