我有一个包含四个(4) UIView
的 UIStackView
。如果我移除其中的一个(1) UIView
,其他三个(3) 将填满整个UIStackView
。
我的问题是:
如何为 UIView
添加最大高度,以便即使分布均匀,它也不会填满整个UIStackView
?我看到了一些关于添加约束的内容,但我无法让它起作用。顺便说一下,我正在使用Swift。
谢谢。
我有一个包含四个(4) UIView
的 UIStackView
。如果我移除其中的一个(1) UIView
,其他三个(3) 将填满整个UIStackView
。
我的问题是:
如何为 UIView
添加最大高度,以便即使分布均匀,它也不会填满整个UIStackView
?我看到了一些关于添加约束的内容,但我无法让它起作用。顺便说一下,我正在使用Swift。
谢谢。
作为确认,这是当前的行为:
而这是所需的行为:
您可以按照以下简单的技巧来实现:
P.S: 我假设您已为堆栈视图添加了必要的适当约束。
如果您的堆栈视图没有“高度”约束,请添加一个:
现在,将其作为IBOutlet
添加到分配的ViewController中;在我的示例中,我将其称为stackHeight
:
@IBOutlet weak var stackHeight: NSLayoutConstraint!
如果您想隐藏视图(在我的示例中,我正在根据分配给自身的 IBAction
在点击它时隐藏橙色按钮),则需要获取要隐藏的视图的高度并从 stackHeight.constant
中减去:
如果您想隐藏视图(在我的示例中,我根据分配给自身的 IBAction
隐藏了橙色按钮,并在用户点击该按钮时),您需要获取要隐藏的视图的高度并从 stackHeight.constant
减去该高度:
@IBAction func orangeTapped(_ sender: AnyObject) {
orange.isHidden = true
// here we go:
stackHeight.constant = stackHeight.constant - orange.frame.size.height
}
移除堆栈视图底部边缘的约束,这样它就会调整大小以适应可见控件。
.fill
,并在堆栈末尾添加一个透明的UIView
。这个视图会被拉伸,而其他视图则会保持堆叠在顶部。尝试在堆栈视图的属性检查器中更改“Distribution”属性为等间距。它应该可以工作。
或者您可以将其更改为相等地填充以使剩余的三个视图在堆栈视图中平均分布。