如何使用Swift以编程方式移动UIView并放置新的UIView?

时间:2018-09-03 16:21:06

标签: ios swift xcode uiview autolayout

我的数据具有布局,但是根据数据,我需要更改视图的位置。我想在屏幕顶部放置一个UIView(UILabel,UITextField ...),然后将布局向下移动,但是我不知道该怎么做,我看到了一些文档和教程,但对我没有帮助。我用情节提要制作了屏幕。

这是原始屏幕:

enter image description here

这是我想要的:

enter image description here

我的故事板:

enter image description here

2 个答案:

答案 0 :(得分:1)

如果只想将视图添加到堆栈视图的顶部,请使用stackView.insertArrangedSubview(newView, at:0)

答案 1 :(得分:0)

我建议设置屏幕并放置“此处放置其他视图”,并在该视图上设置固定的高度限制。使下面的视图在“此处的其他视图”的底部具有固定的空间。

然后从“在此处放置其他视图”的高度约束中拖动控件到视图控制器中。这将使约束成为出口。

现在编辑高度限制并将其常数设置为0。这会将该视图折叠为0高度,使其消失,其他视图向上移动。

然后,在代码中,当您要显示“此处的其他视图”视图时,请使用出口将该视图上的常数设置回其先前的非零值,然后在其上调用layoutIfNeeded()父视图可根据更改的约束条件更新视图布局。

您还可以编写代码,将“此处的其他视图”视图插入视图层次结构,但是这将涉及在代码中删除约束并添加约束,这有点麻烦。

通过调整视图的高度约束,您可以非常轻松地来回显示/隐藏它。