Ank*_*ash 0 ios autolayout uistackview
我有一个带有 UIView (V1) 和 UILabel(L1) 的垂直 UIStackView(S1)。UIView 包含水平 StackView(S2) 和 ImageView 以及垂直 StackView(S3),以将标签显示在另一个标签下方。
现在,当我隐藏顶视图(即 V1)时,我的标签占据了预期的完整高度。但我希望堆栈视图压缩以仅显示标签(L1)内容。但就我而言,它并没有减少宽度。
这是我启动和隐藏 V1 时的 ViewTree 和快照。
当您设置.isHidden = true堆栈视图的排列子视图时,堆栈视图将删除它所占用的空间......但仅限于方向.axis。
所以你的 Stack View 仍然分配 的宽度Top PINK View。
要删除 的高度和宽度Top PINK View,您需要将其从堆栈视图中删除......而不仅仅是隐藏它。
尝试这样 - 点击按钮将在隐藏和显示之间切换:
@IBOutlet var mainStackView: UIStackView!
@IBAction func showHide(_ sender: Any) {
if !topPINKView.isHidden {
topPINKView.isHidden = true
topPINKView.removeFromSuperview()
} else {
mainStackView.insertArrangedSubview(topPINKView, at: 0)
topPINKView.isHidden = false
}
}
Run Code Online (Sandbox Code Playgroud)
注意:请务必将堆栈视图连接到@IBOutlet var mainStackView: UIStackView!
编辑
您甚至可以将其减少为:
@IBAction func showHide(_ sender: Any) {
if topPINKView.superview != nil {
topPINKView.removeFromSuperview()
} else {
mainStackView.insertArrangedSubview(topPINKView, at: 0)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3302 次 |
| 最近记录: |