UIStackView重量像线性布局

时间:2017-08-19 07:16:39

标签: swift autolayout uistackview

如何使用StackView设计以下布局

enter image description here

我知道它可以在不使用stackview的情况下轻松创建但是可以使用stackview,因为我有很多已经使用stackview设计的ui如何在上面的图像之间添加分隔符

为此,我设置了以下约束

enter image description here

**但运行时间显示为** enter image description here

3 个答案:

答案 0 :(得分:3)

您可以使用一些简单的Autolayout constraints来获得UIStackView的此类界面。

下图描述了您可以申请的hierarchy and constraints

enter image description here

Accept and Reject按钮也有Equal Width约束。

输出屏幕截图:

enter image description here

答案 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. 接受按钮和取消按钮之间的等宽约束。

  2. 分隔线上的固定宽度约束(可能将其宽度设置为1)。

  3. 另见this Q&A