Ios 隐藏一个UIView并显示另一个UIView

Ios 隐藏一个UIView并显示另一个UIView,ios,swift,uiview,autolayout,Ios,Swift,Uiview,Autolayout,当我单击我的UISegmentedControl的a段时,我希望显示两个uiview中的一个。但我如何安排,我只显示新的视图。目前我正在调用thisview.removeFromSuperview(),然后从头开始设置新的视图。我还尝试将视图子视图的所有HeightConstants设置为零,然后将视图本身的HeightConstants设置为零,但我宁愿避免这种限制 还有什么更好的方法 同意@rmaddy关于使用UIView的hidden属性的观点,这是一种很好的简单方法,可以使视图不被绘制,

当我单击我的
UISegmentedControl
的a段时,我希望显示两个
uiview
中的一个。但我如何安排,我只显示新的视图。目前我正在调用thisview.removeFromSuperview(),然后从头开始设置新的视图。我还尝试将视图子视图的所有HeightConstants设置为零,然后将视图本身的HeightConstants设置为零,但我宁愿避免这种限制


还有什么更好的方法

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

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

UIView.animate(withDuration:0.4, animations: {
 myView.alpha = 0
}) { (result: Bool) in
 myView.isHidden = true
}
这将使视图“myView”上的alpha淡入淡出,然后在完成后将其设置为隐藏


如果视图需要重新排列,也可以使用相同的动画概念,动画布局更改将是一种很好的方式。

基于@rmaddy和@CSmiths answer,我构建了以下功能:

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
    }
}

我花了那么多时间做手术,现在觉得自己很傻|

ishiden
是一个不错的选择。