UIStackView 内的 UIStackViews 给出错误

Posted

技术标签:

【中文标题】UIStackView 内的 UIStackViews 给出错误【英文标题】:UIStackViews inside UIStackView giving errors 【发布时间】:2019-12-20 16:25:12 【问题描述】:

我想在另一个垂直 UIStackView 中放置 2 个水平 UIStackView。主堆栈视图位于 UITableViewCell 的 contentView 中。每个嵌套的堆栈视图都有 2 个 UIView。对齐设置为“填充”,分布设置为“均填充”。对于主堆栈视图,它们都设置为“填充”。所有的 UIViews 都有 2 个元素,它们与约束相连。当我将它们放在情节提要中时,我收到错误“需要约束:Y 位置,高度”。我在这里做错了什么?

编辑:另外我隐藏 UIViews 取决于它们是否有来自服务器的数据。如果两个 UIView 都没有数据,那么我隐藏整个 stackView。

【问题讨论】:

您是否尝试过选择主堆栈视图,然后添加缺少的约束? 从不相信 Xcode 布局建议。 【参考方案1】:

您的某些视图缺少垂直约束。仅仅因为堆栈视图设置为“填充”并不意味着自动约束引擎会知道每个视图的高度。看看您是否可以匹配以下屏幕截图中描绘的相同约束,并让我知道这是否解决了您的问题;这些约束使视图具有相同的高度。

【讨论】:

是的,这解决了,但是通过代码,如果我隐藏 FirstStackView 我的高度将为 0,那么第二个将有 0 并且在控制台和错误的 UI 中再次出现警告。【参考方案2】:

需要约束:Y 位置、高度

这意味着您放置一个没有内在内容大小的视图(内部堆栈的子视图),因此请确保给它一个高度(与已经有的标签和按钮不同)并从上到下正确地与它们的超级视图挂钩

【讨论】:

以上是关于UIStackView 内的 UIStackViews 给出错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 UIStackView 时,UIImageView 在 UITableViewCell 内被挤压

UITableViewCell 内的 UIStackView

UIStackView 内的 UIStackViews 给出错误

UIScrollView 内的 UIStackView 与动态变化的项目

更改 .xib 文件中 UIStackView 内的 UILabel 的值

在 StackView 内动态添加 ViewControllers - UIScrollView 内的 UIStackView