Edited at

InterfaceBuilderで、UIScrollViewにAutoLayoutを設定すると警告される時の対応

More than 3 years have passed since last update.

※ Xcode Version 6.4 時点

InterfaceBuilderにて、UIScrollViewの上に適当なviewを配置して、いつも通りのノリでAutoLayoutを設定すると

Scroll View

Has ambiguous scrollable content width
Scroll View
Has ambiguous scrollable content height

Ambiguous Layout

Scrollable content size is ambiguous for "Scroll View"

といった警告をされることがある。

スクリーンショット 2015-09-01 16.28.49.png

これは恐らくUIScrollViewのcontentSizeを指定できていないことが原因で、以下の対応で回避できた。

まず、UIScrollViewに対しUIViewを配置し、便宜上contentViewとでも名づけておく。

このcontentViewには親のUIScrollViewに対する上下左右の0マージンに加え、サイズを規定するHeight、WidthのConstraintsも設定してやる。対応は以上。

スクリーンショット 2015-09-01 16.31.03.png

設定したHeight、WidthがUIScrollViewのcontentSizeとして扱われるような振る舞いをする。

このサイズを親のUIScrollViewより大きく設定するとスクロールが発生する。

またcontentView上に配置したviewはいつも通りAutoLayoutが設定できる。

スクリーンショット 2015-09-01 16.33.41.png