【问题标题】:Hide one UIView and show another隐藏一个 UIView 并显示另一个
【发布时间】:2018-09-28 16:14:34
【问题描述】:

当我单击UISegmentedControl 的一个片段时,我希望显示两个UIViews 中的一个。但是我该如何安排呢,我只显示新视图。目前我在旧的上调用thisview.removeFromSuperview(),然后从头开始设置新的。我还尝试将视图子视图的所有 HeightConstants 设置为零,然后将视图本身的 heightConstants 设置为零,但我宁愿避免这种约束手术..

还有什么更好的方法?

【问题讨论】:

  • isHidden 是个不错的选择。

标签: ios swift uiview autolayout


【解决方案1】:

同意@rmaddy 关于使用 UIView 的 hidden 属性的观点,这是一种很好的简单方法,可以使视图不被绘制但仍占据其在视图层次结构和约束系统中的位置。

您可以实现一个简单的动画,使其不那么刺耳,如下所示:

UIView.animate(withDuration:0.4, animations: {
 myView.alpha = 0
}) { (result: Bool) in
 myView.isHidden = true
}

这将淡化视图“myView”上的 alpha,然后在完成后将其设置为隐藏。

如果您的视图需要重新排列自己,也可以使用相同的动画概念,动画布局更改将是一个不错的选择。

【讨论】:

    【解决方案2】:

    基于@rmaddy 和@CSmiths 的回答,我构建了以下函数:

    func changeView(newView: UIView, oldView: UIView) {
        newView.isHidden = false
        newView.alpha = 0
        UIView.animate(withDuration:0.4, animations: {
            oldView.alpha = 0
            newView.alpha = 1
        }) { (result: Bool) in
            oldView.isHidden = true
        }
    }
    

    现在我花了那么多时间在约束手术上,感觉很愚蠢。 :|

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-19
      • 1970-01-01
      • 2012-07-30
      • 2012-02-25
      相关资源
      最近更新 更多