0

UIScrollViewインターフェイスビルダーに設定した制約を尊重するのに苦労しています。

私ができることは、IB 内からスクロール ビューのコンテンツ サイズを設定することだけです。

UIScrollViewには単一のが含まれますUIView

の制約UIScrollView:

スクロール ビューの制約

の制約UIView:

ここに画像の説明を入力

ドキュメントを読んだので、次のように設定しました。

  • UIScrollViewは、それをスーパービューに固定する制約があり、そのサイズを外部から定義します
  • UIView(コンテンツ)のサイズは固定されています(幅と高さの制約により)
  • UIViewに固定されているUIScrollViewため、コンテンツのサイズが定義されます

ただし、IB ではこれらの制約を入力できません。ビューとスクロール ビューの間の 'Bottom Space' 制約 (画像で -2196 として示されている) を 0 に変更すると (したがって、スクロール ビューの下端が固定されます)、'Top Space' 制約は非にリセットされます。 -ゼロ値。逆も同様です。(私はまだ Xcode 5 で試していません。Xcode 5 は、無効な制約に対してはるかに健全なアプローチを採用しており、必要に応じて自分の制約を破棄するだけではありません。)

私は何が欠けていますか?

4

1 に答える 1

0

Xcode 4 の Interface Builder で制約を使って多少洗練されたものを実行しようとするたびに、最終的にはあきらめて、コードで制約を記述するか、または springs'n'struts に切り替えて、layoutSubviews(通常は Xcode をいくつかクラッシュさせた後に)回)。

とはいえ、IB でコンテンツを含むスクロール ビューをレイアウトする別のアプローチがあります。スクロール ビューをそのコンテンツ サイズと同じ大きさにし、ビュー コントローラー (またはそれを含むビュー コントローラー) に依存してスクロール ビュー (またはそのスーパービュー) のサイズを変更し、制約によって実行時にスクロール ビューのフレームが縮小されるようにします。ウィンドウのルート ビュー コントローラーは、ペン先またはストーリーボードのサイズに関係なく、ビューのフレームを常に画面サイズに設定し、サイズ変更はビュー階層を下って流れます。

このアプローチについては、この回答で詳しく説明しました。

スクロール ビューのコンテンツ サイズが実際には 2196 ポイントの高さであると想定されている場合、これはおそらくうまく機能しません。その場合、私は提案するより良いものはありません。

于 2013-06-30T04:23:21.960 に答える