【问题标题】:How to hide elements in a Stack View如何在堆栈视图中隐藏元素
【发布时间】:2018-08-13 20:51:18
【问题描述】:

我有 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)
    } 
}

【问题讨论】:

  • isHidden 应该可以工作。您可能需要显示发布您的代码
  • 刚刚发布,isHidden 在视图不在堆栈视图中时有效,但在我将它们放入堆栈视图时无效
  • 属性(QBContainerWRContainer 等)未连接到这些视图,或者某些东西将isHidden 属性设置回true。使用调试器找出哪个。

标签: ios swift stackview


【解决方案1】:

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

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

【讨论】:

  • 每个 API 苹果都写道,你会发现一个 bug 筑巢养家,因为这个垃圾永远无法解决。 StackViews 有十年了。
【解决方案2】:

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

UIStackView 的好处是它通过 isHidden 属性提供免费动画,如下所示:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-09
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多