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
是一个不错的选择。