85

UIStackView内部にいくつかのUIViewが積み上げられた単純な水平があります。私の目標は、ビュー間に可変間隔を作成することです。「間隔」プロパティを使用して、サブビュー間に一定のスペースを作成できることをよく知っています。しかし、私の目標は、可変スペースを作成することです。可能な限り、スペーサーとして機能する目に見えないビューの使用を避けたいことに注意してください。

私が思いついた最善の方法UIViewsは、別の でラップし、内部スタックのレイアウト マージンを尊重するためにUIStackView使用することでした。この醜い回避策に頼ることなく、layoutMarginsRelativeArrangement = YES同様のことができることを望んでいました。UIViewここに私のサンプルコードがあります:

// Create stack view
UIStackView *stackView = [[UIStackView alloc] init];
stackView.translatesAutoresizingMaskIntoConstraints = NO;
stackView.axis = UILayoutConstraintAxisHorizontal;
stackView.alignment = UIStackViewAlignmentCenter;
stackView.layoutMarginsRelativeArrangement = YES;

// Create subview
UIView *view1 = [[UIView alloc] init];
view1.translatesAutoresizingMaskIntoConstraints = NO;
// ... Add Auto Layout constraints for height / width
// ...
// I was hoping the layoutMargins would be respected, but they are not
view1.layoutMargins = UIEdgeInsetsMake(0, 25, 0, 0);

// ... Create more subviews
// UIView view2 = [[UIView alloc] init];
// ...

// Stack the subviews
[stackView addArrangedSubview:view1];
[stackView addArrangedSubview:view2];

結果は、間隔を空けて互いに隣り合ったビューを持つスタックです。

ここに画像の説明を入力

4

6 に答える 6