如何移动 UIView 并使用 Swift 以编程方式放置新的 UIView?
Posted
技术标签:
【中文标题】如何移动 UIView 并使用 Swift 以编程方式放置新的 UIView?【英文标题】:How to shift UIView's and put a new UIView programmatically with Swift? 【发布时间】:2018-09-03 16:21:05 【问题描述】:我的数据有一个布局,但我需要根据数据更改视图的位置。我想在屏幕顶部放置一个 UIView (UILabel, UITextField ...) 并将布局向下移动,但我不知道该怎么做,我看到了一些文档和教程,但对我没有帮助。我用故事板制作了我的屏幕。
这是原始画面:
这就是我想要的:
我的故事板:
【问题讨论】:
您应该为此使用 tableview 并在需要时在顶部插入一行。 这是个好主意,但在这种情况下,我想添加一个新的 UIView 而且UITableViewCell
也是UIView
,您可以将视图放在单元格的内容视图中。或者,如果您想在 tableView
的顶部添加您的视图,您还可以将您的视图设置为您的 tableView
的 tableHeaderView
属性
我没有 UITableView,而是有 Views 和 StackView,就像显示第三张图片一样。我很欣赏这个提示,但这个项目正在这样做。
抱歉,被屏幕截图上的文字Table View
弄糊涂了。如果将显示堆栈视图的子视图,则此(第三个)屏幕截图可能会更有用。我已将我的建议作为答案假设(根据您的最后评论)所有可见的视图都由堆栈视图排列,您想要做的是在堆栈视图的顶部再添加一个视图
【参考方案1】:
如果您只想在堆栈视图的顶部添加视图,请使用stackView.insertArrangedSubview(newView, at:0)
【讨论】:
StackView 是三个 UIView 之一 那么其他 2 个视图是什么?以及为什么它们不能也按堆栈视图排列? 你好吧,但这是我的第一个应用程序,所以我做了这个,现在我遇到了这个问题。【参考方案2】:我建议您在屏幕上设置“在此处放置其他视图”,并对该视图设置固定高度限制。使下面的视图在“other view here view”的底部有一个固定的空间。
然后从“将其他视图放在此处”的高度约束中按住 Control 并拖动到您的视图控制器中。这将使约束成为一个出口。
现在编辑高度约束并将其设置为 0。这会将视图折叠到 0 高度,导致它消失,而其他视图向上移动。
然后,在代码中,当您希望显示“此处的其他视图”视图时,使用插座将该视图上的常量设置回其先前的非零值,然后在父级上调用 layoutIfNeeded()
view 根据更改的约束更新视图布局。
您还可以编写将“此处的其他视图”视图插入视图层次结构的代码,但这将涉及在代码中删除约束和添加约束,这有点麻烦。
通过调整视图的高度限制,您可以毫不费力地来回显示/隐藏它。
【讨论】:
以上是关于如何移动 UIView 并使用 Swift 以编程方式放置新的 UIView?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Swift 以编程方式使用交替条纹图案填充 UIView?
如何以编程方式将自定义 uiview 添加到视图控制器 SWIFT
以编程方式将 UIScrollView 滚动到 Swift 中的子 UIView(子视图)的顶部