20

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

ここに画像の説明を入力

ここで、緑のビューを 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)]>")
4

4 に答える 4

24
  1. UIStackViewまず、追加する必要がありますcell ここに画像の説明を入力

  2. に制約を追加する必要がありますUIStackView ここに画像の説明を入力

  3. 調整するUIStackView ここに画像の説明を入力

  4. あなたUILabelUIStackView ここに画像の説明を入力

  5. 次にUIView、あなたのUIStackView ここに画像の説明を入力

  6. green-UIViewサブビューのようなものをに追加pink UIView ここに画像の説明を入力

  7. これでカップル制約を追加できますgreen-UIView ここに画像の説明を入力 ここに画像の説明を入力

  8. シミュレーターまたはデバイスでアプリを実行できるようになりました ここに画像の説明を入力 ここに画像の説明を入力

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

于 2015-09-23T07:42:52.727 に答える
17

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

ここに画像の説明を入力

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

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

スタックビューは、次の場合に最も役立ちます

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

このリストはすべてを網羅しているわけではありませんが、いつ、なぜスタック ビューを使用するのかがわかります。

プロトタイプセルの外側

この動作は簡単です。ビューに制約を設定するだけです ここに画像の説明を入力:

そして、スタックビューに制約を設定します: ここに画像の説明を入力

これが役に立てば幸いです、乾杯!

于 2015-09-22T12:43:17.610 に答える
1

制約違反の問題は、幅と高さの制約の優先順位を 800 以上に設定することで簡単に修正できます。

于 2016-01-14T05:24:48.917 に答える
0

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

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

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

于 2018-08-21T14:31:49.807 に答える