最佳答案
我有一个简单的水平 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];
其结果是一个视图堆栈,视图间隔相邻: