在堆栈视图中设置某些项之间的空间

时间:2016-01-03 10:57:07

标签: ios xcode

在Interface Builder中,我使用水平UIStackView,并希望将项目放置为:

   xx   xx   xx

每个x都代表一个项目。 Item1和item2应该相互粘贴,但item2和item3应该是间隔的,依此类推。这意味着我不希望所有项目之间保持恒定的间距。

我该怎么办?
(可能相当于工具栏的灵活空间)

谢谢!

7 个答案:

答案 0 :(得分:49)

根据Lumialxk的回复,这是一个答案。选择要处理的堆栈视图,并将spacing属性更改为所需的值。

Screen shot of the property panel

答案 1 :(得分:26)

在水平堆栈视图中,还有三个水平堆栈视图,以便您可以控制每个项目的间距和分布。见下面的截图:

enter image description here

答案 2 :(得分:20)

iOS 11及以上

stackView.setCustomSpacing(32.0, after: headerLabel)

了解更多信息:Stack View Custom Spacing

答案 3 :(得分:6)

以编程方式为每个视图

stackView.spacing = 10.0

如果您想在每个视图后设置自定义间距需要支持低于iOS11

创建一个高度清晰的UIView,并将其作为addArrangedSubview添加到stackView中。

答案 4 :(得分:4)

在堆栈视图中,您只能定义项目之间的常量空间。这样做很容易,只需在大纲中选择堆栈视图并设置空间值。

答案 5 :(得分:1)

迅速4: 例如,如果要在第一个子视图后设置一个空格:

stackView.setCustomSpacing(30.0, after: stackView.subviews[0])

答案 6 :(得分:0)

这不是传统的解决方案,但就我进行测试而言,它是有效的。在interface builder中为stackview的items之间设置一个恒定的间距后,你仍然可以从它的顶部到它上面的item的底部向stackview项添加一个约束,并给出一个与stackview的恒定间距不同的值。 xcode 将指示错误,因为它通过设置 stackview 的恒定间距和您添加的约束创建的约束之间存在冲突约束。但在运行时,它使用添加的第二个约束,该约束从恒定间距给出可变间距。

我认为 xcode 接口只是落后,应该更新以不显示此错误,因为如果方法 stackView.setCustomSpacing 已经存在,为什么 xcode 在编译时还无法知道可变间距可以存在。但是就像我说的那样显示错误,但使用了第二个约束。 试试看它是否像我描述的那样工作。不保证!