web-dev-qa-db-ja.com

UIStackViewコントロール内のUIView高さの調整

IOS 9 SDKでUIStackViewを使用しています。スタックビューの高さは44ポイントです。以下に示すように、StackView内にUILabelとUIViewがあります。

enter image description here

次に、緑色のビューを44よりもはるかに小さくします。20のようになります。

更新:UIStackViewがなければ、制約を壊しています:

[GT.BubbleView:0x14536610]   (Names: '|':UITableViewCellContentView:0x14536fd0 )>",
    "<NSLayoutConstraint:0x146b7300 GT.BubbleView:0x14536610.trailing == UITableViewCellContentView:0x14536fd0.trailingMargin>",
    "<NSLayoutConstraint:0x146c4000 'UIView-Encapsulated-Layout-Width' H:[UITableViewCellContentView:0x14536fd0(286)]>"

20
john doe

以下のような20x20の正方形を達成しようとしている場合:

enter image description here

あとは、緑色のビューに別のUIViewを追加するだけです。 UIViewのサイズを20x20ptsにします。次に、小さなビューの背景を緑に変更し、大きなビューの背景をクリアします。

とはいえ、このソリューションはスタックビューを必要とせず、UIを過度に複雑にします。代わりにautolayoutを使用することをお勧めします。

Stackviewsが最も役立つのは

  1. デバイスの向きの変化を補正したい場合、
  2. たくさんのものを積み重ねたい、
  3. 多くの要素を含む非常に複雑なレイアウトを作成したいが、繰り返し可能なパターンがある、または
  4. 単純に要素を削除したり、サイズを修正して要素を追加したりしたい

このリストは完全なものではありませんが、スタックビューを使用するタイミングと理由を理解できるはずです。

プロトタイプセルの外側

この動作は簡単です。ビューに制約を設定するだけです: enter image description here '

そして、スタックビューに制約を設定します: enter image description here

これがお役に立てば幸いです!

17
Rob Norback
  1. まず、UIStackViewcellを追加する必要があります enter image description here

  2. UIStackViewに制約を追加する必要があります enter image description here

  3. UIStackViewを調整します enter image description here

  4. UILabelをドラッグしてUIStackViewにドロップします enter image description here

  5. 次に、UIViewUIStackViewにドラッグアンドドロップします enter image description here

  6. green-UIView likeサブビューをpink UIViewに追加します enter image description here

  7. これで、green-UIViewにカップル制約を追加できます enter image description hereenter image description here

  8. シミュレータまたはデバイスでアプリを実行できるようになりました enter image description hereenter image description here

    通知UILabelに制約を追加しないことに注意してください。

24

幅と高さの制約の優先度を800以上に設定することにより、制約の問題を簡単に解決できます。

1
Farooq Zaman

OPとは少し異なる問題があるにもかかわらず、他の人が見ることができるように、ここに自分の答えを投稿したかったのです。

UIStackViewを含むUIViewのサイズを変更しようとしていて、制約が壊れていました。スタックビューが表示されていることを示す関連情報があるかどうかに応じて、UIViewの高さの制約を0〜66の間で変更していました。

ビュー内のスタックビューの上部および下部の制約を削除して、代わりに垂直方向の中央に設定することで、制約を解除することができました。これにより、テーブルビューでのスクロールがはるかにスムーズになりました。

0
Michael McKenna