UIStackView; &之间的相等间距外部元素

时间:2017-03-27 11:40:38

标签: ios swift autolayout uistackview

UIStackView太棒了,我喜欢Equal Spacing Distribution。 但是如何动态地在元素之外实现相同的空间呢? 在我的情况下,所有元素将具有相同的比例1:1

enter image description here

5 个答案:

答案 0 :(得分:4)

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

来源: https://stackoverflow.com/a/32862693/3393964

enter image description here

答案 1 :(得分:2)

@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 个项目的视图

EqualSpacing UIStackView

这里有 equalCentering 分布,外观也不错。

EqualCentering UIStackView

答案 2 :(得分:1)

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

View Layout Screenshot

StackView Properties Screenshot

答案 3 :(得分:0)

您可以使用约束,然后给出相同的高度和宽度。因此,当您更改组件中任何一个组件的维度时,所有组件都会以相同的维度进行更改。

答案 4 :(得分:0)

我认为你想要的是在堆栈视图外面留出相同的间距,外面的间距。

Example

我要做的是将堆栈视图放在另一个视图(灰色视图)中,并将堆栈视图的前导尾随约束设置为等于<堆栈视图的strong>间距。

View Hierarchy

堆栈视图的间距

enter image description here

堆栈视图从其超视图(灰色视图)

的约束

enter image description here