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];
結果は、間隔を空けて互いに隣り合ったビューを持つスタックです。