Swift UIView 从堆栈视图中消失

Posted

技术标签:

【中文标题】Swift UIView 从堆栈视图中消失【英文标题】:Swift UIView disappearing from Stack View 【发布时间】:2017-05-28 20:16:40 【问题描述】:

我在垂直堆栈视图中有一个标签、一个图像视图和一个按钮。对齐设置为填充,分布设置为等间距,偏移量为 10。在我的故事板上,标签显示在顶部,图像在中心,按钮在底部。

但是,当在模拟器或设备上运行时,UIView 会完全从视图中剥离,因此标签出现在屏幕顶部,而按钮则显示在标签的正下方。

我唯一的约束是在堆栈视图上设置到父视图

编辑:忘了说 UIImageView 在 UIView 内

【问题讨论】:

图像视图是否包含图像?如果它是空的,它可能被分配零维度。 图像视图与其包含的UIView之间是否有任何限制? 两者之间没有限制,因为我忽略了它,但是我现在已经将 imagview 固定到 uiview 上,它仍然没有出现。图像是空的,但在点击播放按钮时设置。 UIView 本身也不显示(我使用它是为了在 UIImage 动画时在 UIImage 周围显示静态边框) 必须在 UIView 上设置大小限制 【参考方案1】:

我遇到了类似的问题。我的 UIStackView 中的 UIView 只有一个 Width 约束,并且会在运行时消失。我发现我可以使用以下任一选项让它再次出现:

添加高度约束 添加顶部和底部约束

【讨论】:

我有一个直到运行时才设置的图像视图。它总是会消失...另一方面,在编译时设置图像会正确显示图像。 顺便说一句,只有高度或顶部/底部约束并不能解决我的问题。在我的情况下,我还必须使用宽度约束 只需添加高度限制【参考方案2】:

我在stackview 中的tableview 遇到了同样的问题。向视图添加了高度约束,现在一切正常

【讨论】:

【参考方案3】:

在 UIView 边框上设置 Y 约束会导致它在点击播放按钮时出现,但它会超出屏幕边界。

我必须在 UIView 上设置大小限制才能正确显示。

【讨论】:

以上是关于Swift UIView 从堆栈视图中消失的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 swift 清除和重绘 UIView 的内容(存在于视图控制器中)?

使用 AVPlayer 播放的视频在 swift3 中从其容器视图中消失

UIView 和 StackView 删除元素,Swift

iOS Swift 3 - 面板点击后删除覆盖 UIView

Swift 4:防止UIView的子视图移动到它的父节点之外

Swift:将视图从堆栈视图带到前面