Septeni Engineer's Blog

セプテーニエンジニアが綴る技術ブログ

UIScrollviewをStoryboardで設定する場合

こんにちは。むらいです


全然たいした内容じゃないのですが

ひっさびさにハマったので、メモがてら書いていきます。

objective-cネタです。


uiscrollviewをstoryboardを使って配置する際に、

contentsizeを指定しても全然変化がありませんでした。

まず、storyboardでviewcontrollerを配置し、その上にscrollviewを置きました。

どちらもheightはデフォルトです。(私の場合はiPhone4画面で作っていたので460です。)

で、scrollviewのheightを可変にしたかったので、viewdidloadでcontentsizeを指定しても変化なし!!

なぜ!?

useautolaoutのチェックを外すと動きます。という記事を見ましたが外したくなかったので、

なんとか方法はあるはずと探したところ、

「AutoLayoutの場合、viewWillAppear後に、viewの位置決定が行われるようです。」

という記事を発見。

http://www.zero4racer.com/blog/988

どうやら、scrollviewに限らずviewはviewDidLayoutSubviewsでサイズが決まるようです。

iOS6でも、AutoResizingを使用している場合は、viewWillAppearでframeは決定しているようです。)

どうりで、nslogしてもサイズが返ってこないなと思ってました。

なので、contentsizeをviewDidLayoutSubviewsで行うようにしたところ、

scrollviewのサイズが変更され、きちんとスクロールされるようになりました!