如何在堆栈视图中隐藏元素

How to hide elements in a Stack View

我有 4 个单独的视图,我想在按下其中一个按钮时隐藏另外 3 个视图。

我将它们放在 UIStackView 中,但 .isHidden = true 出于某种原因没有隐藏视图。

当它们不在堆栈视图中时它工作正常。

@IBAction func qbpressed(_ sender: Any) {
    QBContainer.isHidden = false
    WRContainer.isHidden = true
    RBContainer.isHidden = true
    QBIndicator.isHidden = false
    WRIndicator.isHidden = true
    RBIndicator.isHidden = true
    TEIndicator.isHidden = true
    QBButton.setTitleColor(#colorLiteral(red: 0, green: 0.5008062124, blue: 1, alpha: 1), for: .normal)
    WRButton.setTitleColor(#colorLiteral(red: 0.7540688515, green: 0.7540867925, blue: 0.7540771365, alpha: 1), for: .normal)
    RBButton.setTitleColor(#colorLiteral(red: 0.7540688515, green: 0.7540867925, blue: 0.7540771365, alpha: 1), for: .normal)
    TEButton.setTitleColor(#colorLiteral(red: 0.7540688515, green: 0.7540867925, blue: 0.7540771365, alpha: 1), for: .normal)

    if intersitial.isReady{
        intersitial.present(fromRootViewController: self)
    } 
}

将视图设置为隐藏应该使其不再可见,无论它是否在 UIStackView.

UIStackView 的好处是它通过 isHidden 属性 提供免费动画,像这样:

// Assuming stackViewSubView.isHidden == false here
UIView.animate(withDuration: 0.25, animations: {
    self.stackViewSubView.isHidden = true
    self.view.layoutIfNeeded()
})

isHidden 属性 不起作用,但您可以使用 alpha 并获得相同的结果,

QBIndicator.alpha = 1.0 将适用于 QBIndicator.isHidden = falseQBIndicator.alpha = 0.0 将适用于 QBIndicator.isHidden = true