界面堆栈视图;元素之间和外部元素的间距相等

UIStackView; Equal Spacing Between & Outside Elements

UIStackView 很棒,我喜欢等间距分布。 但是如何在元素之外动态地实现相同的 space 呢? 在我的例子中,所有元素都将具有相同的比率 1:1

您可以使用故事板添加等间距,如下所示:

来源:

您可以使用约束条件,然后给出相同的高度和宽度。因此,当您更改任何组件的尺寸时,所有组件都会更改为相同的尺寸。

我认为您想要的是堆栈视图外部的间距与外部间距相同。

我要做的是将堆栈视图放入另一个视图(灰色视图)并设置 leadingtrailing constraint堆栈视图等于堆栈视图的间距

堆栈视图的间距

Stack View 的超级视图(灰色视图)的约束

我更喜欢让 UIStackView 处理间距。创建一个间距相等的 UIStackView 并在堆栈视图的远端添加两个 0px 宽(如果使用垂直堆栈视图则为 0px 高)透明视图。

@Declan 的想法是正确的。这是以编程方式回答的问题,您可以在两侧添加额外的视图,以便堆栈视图为任意数量的按钮提供正确的外部间距。

stackView.alignment = .center
stackView.axis = .horizontal
stackView.distribution = .equalCentering

// Then when I add the views...
let leftView = UIView()
stackView.addArrangedSubview(leftView)
content.buttons.forEach { (button) in
  stackView.addArrangedSubview(button)
}
let rightView = UIView()
stackView.addArrangedSubview(rightView)

这是我使用 equalSpacing

的 2 个项目的视图

这里是 equalCentering 分布,也很好看。