【问题标题】:How to shift UIView's and put a new UIView programmatically with Swift?如何移动 UIView 并使用 Swift 以编程方式放置新的 UIView?
【发布时间】:2018-09-03 16:21:05
【问题描述】:

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

这是原始画面:

这就是我想要的:

我的故事板:

【问题讨论】:

  • 您应该为此使用 tableview 并在需要时在顶部插入一行。
  • 这是个好主意,但在这种情况下,我想添加一个新的 UIView
  • 而且UITableViewCell 也是UIView,您可以将视图放在单元格的内容视图中。或者,如果您想在 tableView 的顶部添加您的视图,您还可以将您的视图设置为您的 tableViewtableHeaderView 属性
  • 我没有 UITableView,而是有 Views 和 StackView,就像显示第三张图片一样。我很欣赏这个提示,但这个项目正在这样做。
  • 抱歉,被屏幕截图上的文字Table View弄糊涂了。如果将显示堆栈视图的子视图,则此(第三个)屏幕截图可能会更有用。我已将我的建议作为答案假设(根据您的最后评论)所有可见的视图都由堆栈视图排列,您想要做的是在堆栈视图的顶部再添加一个视图

标签: ios swift xcode uiview autolayout


【解决方案1】:

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

【讨论】:

  • StackView 是三个 UIView 之一
  • 那么其他 2 个视图是什么?以及为什么它们不能也按堆栈视图排列?
  • 你好吧,但这是我的第一个应用程序,所以我做了这个,现在我遇到了这个问题。
【解决方案2】:

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

然后从“将其他视图放在此处”的高度约束中按住 Control 并拖动到您的视图控制器中。这将使约束成为一个出口。

现在编辑高度约束并将其设置为 0。这会将视图折叠到 0 高度,导致它消失,而其他视图向上移动。

然后,在代码中,当您希望显示“此处的其他视图”视图时,使用插座将该视图上的常量设置回其先前的非零值,然后在父级上调用 layoutIfNeeded() view 根据更改的约束更新视图布局。

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

通过调整视图的高度限制,您可以毫不费力地来回显示/隐藏它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-12
    • 2017-03-17
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多