在Interface Builder中,我使用水平UIStackView,并希望将项目放置为:
xx xx xx
每个x都代表一个项目。 Item1和item2应该相互粘贴,但item2和item3应该是间隔的,依此类推。这意味着我不希望所有项目之间保持恒定的间距。
我该怎么办?
(可能相当于工具栏的灵活空间)
谢谢!
答案 0 :(得分:49)
答案 1 :(得分:26)
答案 2 :(得分:20)
答案 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 在编译时还无法知道可变间距可以存在。但是就像我说的那样显示错误,但使用了第二个约束。 试试看它是否像我描述的那样工作。不保证!