2017年1月23日月曜日

UIScrollViewはStoryboardで扱いにくい

画面の一部(または全部)をスクロールさせて大きなコンテンツを見せるためのクラスがUIScrollViewなわけだ。

画面サイズに収まるUIScrollViewの上に、画面サイズに収まらない(または拡大表示すると収まらなくなる)コンテンツを置くことで、スクロールが可能になる仕組み。
UIScrollViewは要するにでかいコンテンツを見せるための窓のようなもの。

Storyboardからも設定できるからそっちから使いたいけど、ちょっと扱いにくい。
Xcode8にもなって、いまだ完全対応してないのかよ…と愚痴ってやりたい。

具体的には、中のでかいコンテンツのサイズを設定するcontentSizeがStoryboardじゃ設定できないっぽい。
Storyboardで設定するだけじゃ以下のようなWarningが出てしまう。
コンパイル、実行はできるけど気持ち悪い。
warning: Ambiguous Layout: Scrollable content size is ambiguous for "My Scroll View".

なので通常は以下のようにコードで設定してやる必要がある。
myScrollView.contentSize = CGSize(width: 500, height: 500)

でも細かな部品を配置したいとき、コードだけでやるのは大変だよね。Constraintsの設定とかよくわかんないし。
その場合は、ダミーのUIViewをScrollViewに上下左右のマージン0、センターをScrollViewと同じにするConstraintsにして貼ってやり、さらにその上に中身のでかいコンテンツを置いてやるとWarningが消えてくれる。

UIScrollViewはまだ不慣れなので、わかんない点もあるので、いろいろ調べてみたい。

0 件のコメント:

コメントを投稿