制約のない自動レイアウト
スタックビューは、複雑な制約を導入することなく、自動レイアウトのパワーを活用する簡単な方法を提供します。単一のスタックビューは、ユーザインターフェイス要素の行または列を定義します。スタックビューは、そのプロパティに基づいてこれらの要素を配置します。
- axis: (UIStackView のみ) スタックビューの方向を垂直方向または水平方向に定義します。
- orientation: (NSStackView のみ) スタックビューの方向を垂直方向または水平方向に定義します。
- distribution: 軸に沿ったビューのレイアウトを定義します。
- alignment: スタックビューの軸に垂直なビューのレイアウトを定義します。
- spacing: 隣接するビュー間のスペースを定義します。
スタックビューを使用するには、Interface Builder で、垂直または水平のスタックビューをキャンバス上にドラッグします。次に、コンテンツをドラッグしてスタックにドロップします。
オブジェクトに固有のコンテンツサイズがある場合、そのサイズでスタックに表示されます。固有のコンテンツサイズがない場合、Interface Builder はデフォルトのサイズを提供します。オブジェクトのサイズを変更でき、Interface Builder はそのサイズを維持するための制約を追加します。
レイアウトをさらに微調整するには、属性インスペクタを使用してスタックビューのプロパティを変更できます。たとえば、以下の例では、8 ポイントの間隔と塗りつぶし均等 (Fills Equalily) 分布を使用しています。
スタックビューはまた、配置されたビューのコンテンツを保持し、耐圧縮性の優先順位に基づいてレイアウトを決定します。これらは、サイズインスペクタを使用して変更できます。
配置されたビューに制約を直接追加することで、レイアウトをさらに変更できます。ただし、発生する可能性のある競合を回避する必要があります。一般的な経験則として、ビューのサイズがデフォルトで与えられたディメンションの固有のコンテンツサイズに戻っている場合は、そのディメンションの制約を安全に追加できます。競合する制約の詳細については、満たされないレイアウト を参照してください。
さらに、スタックビューを他のスタックビュー内にネストして、より複雑なレイアウトをビルドできます。
一般に、スタックビューを使用して、可能な限り多くのレイアウトを管理します。スタックビューだけでは目標を達成できない場合にのみ、制約を作成する事に頼ってください。
スタックビュー使用の詳細については、UIStackView クラスリファレンス または NSStackView クラスリファレンス を参照してください。
ネストされたスタックビューを独創的に使用すると、複雑なユーザインターフェイスを作成できますが、制約の必要性を完全に回避することはできません。最低限、最も外側のスタックの位置 (および場合によってはサイズ) を定義するには、常に制約が必要です。
前:自動レイアウトの理解 次:制約の構造