169

これは私のセットアップです: 私はUIScrollView0 に設定されたリーディング、トップ、トライアル エッジを持っています。この中に、次のUIStackView制約を追加します:

stackView.centerYAnchor.constraintEqualToAnchor(selectedContactsScrollView.centerYAnchor).active = true  
stackView.leadingAnchor.constraintEqualToAnchor(selectedContactsScrollView.leadingAnchor).active = true

スタック ビュー内にいくつかのビューを追加します。
私の問題は、制約のため、スタック ビューに追加された最初のビューもリーディング エッジ = 0 になることです。

最初のビューにパディングを追加するにはどうすればよいですか? スクロール ビューの制約を調整せずに。

4

12 に答える 12

187

制約が Stack View 内で機能しないか、やや奇妙に見えることがわかりました。

(たとえば、画像スタックビューで選択した先頭/末尾の制約を追加すると、コレクションビューにも先頭が追加されますが、末尾は追加されません。確実に競合します)。

スタックビュー内のスタックビュー

スタックビュー内のすべてのビューのレイアウト マージンを設定するには、次を選択します。

Stack View > Size Inspector > Layout Margins > Fixed

注:"Fixed"オプションは"Explicit"、スクリーンショットに見られるように、以前は と呼ばれていました。

次に、パディングを追加します。

絵コンテ

于 2016-06-28T17:10:58.637 に答える
32

あなたが提供したソリューションは、UIStackView 内のビューにパディングを追加しませんが (質問で望んでいたように)、UIStackView のリーディングを追加します。

解決策は、元の UIStackView 内に別の UIStackView を追加し、この新しい UIStackView をリードすることです。次に、ビューをこの新しい UIStackView に追加します。

ヒント、Interface Builder を使用して完全に行うことができます。つまり、コードを記述する必要はありません。

于 2015-09-15T08:32:18.413 に答える
19

私にとってうまくいったのは、単なるスペーサーである別のUIViewをスタックビューに追加することです(少なくともstackView.distribution = .Fillで動作します):

let spacerView = UIView(frame: CGRect(x: 0, y: 0, width: 10, height: 10))
stackView.addArrangedSubview(spacerView)
stackView.addArrangedSubview(viewThatNeedsSpaceBeforeIt)
stackView.addArrangedSubview(NextView)...
于 2015-11-05T08:10:10.060 に答える
7

先頭のパディングのみが必要な場合は、スタック ビューの配置を「末尾」に設定すると、含まれる各サブビューに一意の先行制約を自由に指定できます。

おまけとして、スタック ビューの配置を「中央」に設定することもできます。次に、先頭および/または末尾の制約を使用して、各アイテムの両側に独自のパディングを与えることができます。

于 2016-11-16T21:17:16.167 に答える
3

解決策は、スタック ビューに通常のビューを配置して、制約を追加したいビューを保持し、スタック ビューのビューに関連するアイテムに制約を追加することです。そうすれば、元のビューは、スタック ビュー内で先行および後続の制約を持つことができます。

これは、インターフェイス ビルダーおよびプログラムで行うことができます。

于 2020-04-22T18:34:44.813 に答える
-3

解決策はかなり単純だったようです。それ以外の:

stackView.leadingAnchor.constraintEqualToAnchor(selectedContactsScrollView.leadingAnchor).active = true

私はちょうど書いた:

stackView.leadingAnchor.constraintEqualToAnchor(selectedContactsScrollView.leadingAnchor, constant: 15).active = true
于 2015-09-13T16:58:21.743 に答える