49659


添付画像のように`VerticalなStackView`の中に置いた`View`の左右に`10ポイント`の空白を設けたいが、`Conflicting
Constraints`してしまいます。

  * そもそも何故コンフリクトしているのかわかっていない 
    * 自分が付けたのは`View.leading = leading + 10` なので、何故 `leading = View.leading`がいるのか理解できてない（おそらくStackViewのせいだと思いますが...）
  * 吹き出しに`Select or more constraints to delete:` とあるので自分が付けた記憶のない `leading = View.leading` を選択して `Delete Constraints`ボタンを押そうとしたが、そもそも`leading = View.leading`を何故かUI的に選択できない（チェックボックスが反応しない）

という状況です。

どうすれば左右に空白を設けることができるのでしょうか？

[![画像の説明をここに入力](https://i.stack.imgur.com/ACu4q.png)](https://i.stack.imgur.com/ACu4q.png)  

* * *

[![画像の説明をここに入力](https://i.stack.imgur.com/S8s81.png)](https://i.stack.imgur.com/S8s81.png)


CC BY-SA 4.0
2018-10-25T11:04:33.817
49649
2021-03-19T02:56:06.177
2018-10-25T12:14:42.697
9008
9008
question
swift ios autolayout
VerticalなStackViewの中に置いたViewの左右に10ポイントの空白を設けたいが、Conflicting Constraintsする


UIStackViewに追加したビューの位置はすべてUIStackViewによって管理されます。ビューとUIStackViewに直接の制約を設定することはできません。

縦方向のUIStackViewなら横方向の位置は右/左/中央寄せ、幅いっぱいに広げる、の中から選ぶことになります。その設定と内部のビューのIntrinsicContentSizeによって位置が決定します。

これを踏まえて期待通りの結果を得るには大きく２つの方法があります。

まずUIStackViewとスーパービューの関係としてLeading/Trailingに10ptの制約をつけることです。

[![画像の説明をここに入力](https://i.stack.imgur.com/u7Sln.png)](https://i.stack.imgur.com/u7Sln.png)

もう一つの方法として、UIStackViewの内部のビューを入れ子にしてUIStackViewに直接追加されたビューに対して制約をつけることです。

UIStackViewとビューに制約をつけることはできませんが、入れ子のビューとビューにはいくらでも制約をつけることができます。

どちらを使用するかはケースバイケースですが、後者の方法をマスターしておくと、UIStackViewとの組み合わせて表現できるレイアウトの幅がかなり広がり、応用力が身につきます。

[![画像の説明をここに入力](https://i.stack.imgur.com/kqTNB.png)](https://i.stack.imgur.com/kqTNB.png)


CC BY-SA 4.0
2018-10-25T14:24:26.887
49659
2018-10-25T14:24:26.887
5519
49649
answer


stackviewのalignmentをcenterにすれば解決します


CC BY-SA 4.0
2021-03-19T02:56:06.177
74756
2021-03-19T02:56:06.177
44400
49649
answer