UIStackView分配同样填写

Bnj*_*Bnj 11 constraints ios autolayout swift uistackview

所以,我有一个UIStackView包含四(4)个UIView.如果我删除其中的一个(1)UIView,其他三个(3)将填充整个空间UIStackView.

我的问题:

如何在a上添加最大高度,UIView以便UIStackView即使分布均匀填充,它也不会填充整个空间?我读了一些关于添加约束的内容,但我无法使其工作.顺便说一下,我正在使用swift.

谢谢.

Ahm*_*d F 15

如果我没有误会,你面临的是:

在此输入图像描述

你要的是:

在此输入图像描述

好吧,如果这是你的情况 - 我希望它是 - ,我通过做一个非常简单的技巧实现了这一点:

PS:我假设你为stackView添加了approrpriate约束.

如果您的stackView没有"高度"约束,请添加一个:

在此输入图像描述

现在,将它作为IBOutlet添加到指定的ViewController,在我的示例中,我正在调用它IBOutlet:

@IBOutlet weak var stackHeight: NSLayoutConstraint!
Run Code Online (Sandbox Code Playgroud)

如果您要隐藏视图的事件 - 在我的示例中,我隐藏在IBAction上的橙色按钮,当它点击它时,应该隐藏 - 你需要获得你想要的视图的高度隐藏和减去stackHeight:

    @IBAction func orangeTapped(_ sender: AnyObject) {
        orange.isHidden = true

        // here we go:
        stackHeight.constant = stackHeight.constant - orange.frame.size.height
    }
Run Code Online (Sandbox Code Playgroud)


pha*_*ann 6

删除堆栈视图底部边缘的约束。然后它将调整大小以适合可见控件。