如何使用StackView设计以下布局
我知道它可以在不使用stackview的情况下轻松创建但是可以使用stackview,因为我有很多已经使用stackview设计的ui如何在上面的图像之间添加分隔符
为此,我设置了以下约束
答案 0 :(得分:3)
您可以使用一些简单的Autolayout
constraints
来获得UIStackView
的此类界面。
下图描述了您可以申请的hierarchy and constraints
:
Accept and Reject
按钮也有Equal Width
约束。
输出屏幕截图:
答案 1 :(得分:2)
你可以使用UIStackView
来做到这一点,方法如下:
首先,创建一个UIView
的子类,用作两个按钮之间UIView
的类。
class CustomWidthView: UIView {
override var intrinsicContentSize: CGSize {
return CGSize(width: 1, height: self.frame.height)
}
}
您只需要覆盖 intrinsicContentSize
。
现在,在它们之间添加2个按钮和一个空的UIView
,并将UIView
的类设置为CustomWidthView
。在堆栈视图中嵌入2个按钮和它们之间的视图,并使用适当的约束正确设置堆栈视图的位置。
选择堆栈视图,然后从属性检查器中找到名为 Distribution 的属性,然后从旁边的下拉菜单中选择按比例填充
要在UI Builder中反映您的更改,请选择自定义宽度视图并转到尺寸检查器,转到列表底部,您将找到名为 Intrinsic的属性大小,将其值更改为占位符,并从 width 下拉菜单中选择 1 。
可能有更好的方法来实现这一目标,但这是我现在找到的,我想找到一个更好的方法。
答案 2 :(得分:2)
由于UIStackView
使用自动布局来排列其子视图,因此您可以通过创建约束来修改其行为。
我假设你在堆栈中有三个视图:接受按钮,分隔符和取消按钮。
创建两个约束:
接受按钮和取消按钮之间的等宽约束。
分隔线上的固定宽度约束(可能将其宽度设置为1)。
另见this Q&A。