スクロールビューの操作
スクロールビューを操作する場合、そのスーパービュー内のスクロールビューのフレームのサイズと位置、およびスクロールビューのコンテンツ領域のサイズの両方を定義する必要があります。これらの機能はすべて、自動レイアウトを使用して設定できます。
スクロールビューをサポートするために、システムは制約の位置に応じて制約を異なる方法で解釈します。
- 他の全てのビューと同様に、スクロールビュー外のオブジェクトとスクロールビューの間の全ての制約は、スクロールビューのフレームに適用されます。
- スクロールビューとそのコンテンツの間の制約の場合、動作は制約されている属性によって異なります。
- スクロールビューの端またはマージンとそのコンテンツの間の制約は、スクロールビューのコンテンツ領域に適用されます。
- 高さ、幅、または中心間の制約は、スクロールビューのフレームに適用されます。
- スクロールビューのコンテンツとスクロールビュー外のオブジェクトとの間の制約を使用して、スクロールビューのコンテンツの位置を固定し、そのコンテンツがスクロールビューの上に浮かんでいるように見せることもできます。
最も一般的なレイアウトタスクでは、ダミービューまたはレイアウトグループを使用してスクロールビューのコンテンツを含めると、論理がはるかに簡単になります。Interface Builder で作業する場合の一般的なアプローチを以下に示します。
- シーンにスクロールビューを追加します。
- 通常どおり、スクロールビューのサイズと位置を定義するために制約を描画します。
- スクロールビューにビューを追加します。ビューの Xcode 固有のラベルをコンテンツビューに設定します。
- コンテンツビューの上端、下端、先端、後端をスクロールビューの対応する端に固定 (Pin) します。コンテンツビューは、スクロールビューのコンテンツ領域を定義するようになりました。
- (オプション) 水平スクロールを無効にするには、コンテンツビューの幅をスクロールビューの幅と同じに設定します。コンテンツビューがスクロールビューを水平方向に満たすようになりました。
- (オプション) 垂直スクロールを無効にするには、コンテンツビューの高さをスクロールビューの高さと同じに設定します。コンテンツビューがスクロールビューを水平方向に満たすようになりました。
- コンテンツビュー内にスクロールビューのコンテンツをレイアウトします。制約を使用して、コンテンツを通常どおりコンテンツビュー内に配置します。
この時点では、コンテンツビューのサイズは固定されていません。内部に配置する全てのビューやコントロールに合わせて伸縮できます。
レイアウトでは、コンテンツビューのサイズを完全に定義しなければなりません (手順 5 と 6 で定義されている場合を除く)。コンテンツ固有のサイズに基づいて高さを設定するには、コンテンツビューの上端から下端に伸びる制約とビューの切れ目のないチェーンがなければなりません。同様に、幅を設定するには、コンテンツビューの先端から後端まで、切れ目のない制約とビューがなければなりません。
コンテンツに固有のコンテンツサイズがない場合は、コンテンツビューまたはコンテンツに適切なサイズの制約を追加しなければなりません。
コンテンツビューがスクロールビューよりも高い場合、スクロールビューでは垂直スクロールが有効になります。コンテンツビューがスクロールビューよりも広い場合、スクロールビューでは水平スクロールが有効になります。それ以外の場合、スクロールはデフォルトで無効になっています。
前:サイズクラス固有のレイアウト 次:自動サイズ化テーブルビューセルの操作