将 UIView 边缘固定到 UITableViewCell contentView 时出现布局错误

Layout errors when pinning UIView edges to UITableViewCell contentView

这里遇到了一个让我抓狂的问题。

在情节提要中,我在布局中有一个 table 视图,我试图将 UIView 的前导、顶部、尾随和底部约束固定到原型单元格的内容视图。够直白了。

每当我这样做时,我都会在 Xcode:

中收到 UIView 的这些布局错误

"Need constraints for: X position, width"

"Need constraints for : Y position, height"

对该视图的约束(Superview 是 contentView):

在情节提要中,我在 table 视图上设置了以下内容:

并且在 table 视图单元格上:

我看过一些 SO 帖子和其他演练,说明固定边缘是做什么的,据我了解自动布局,我已经提供了必要的约束和信息。

我该如何解决这个问题?

(顺便说一句:我是 运行 Xcode 11.3.1。)


更新:此 table 视图的单元格将固定高度。我正在寻找为其内容提供高度的单元格。

UIView 本身没有 intrinsicSize - 所以你告诉单元格的 contentView 固定到 0 x 0.

的框架

如果您要向 UIView 添加内容,请对内容设置约束以控制视图的大小,这样错误就会消失。

同时,给视图一个高度限制,这将解决问题。


编辑

对于固定高度的单元格...尝试重新开始。

  • 添加一个 table 视图 - 为其提供所需的约束
  • 添加一个table视图单元格原型
  • 向那个单元格添加一个 UIView(给它一个背景颜色以便于查看)
  • 在所有 4 个边上将视图限制为零(限制到边距)
  • 将单元格行高设置为 50(取消选中自动)

这是我的样子:

事实证明我已经正确配置了 table 视图和单元格约束和设置;问题出在视图层次结构的更上层。

table 视图放置在垂直堆栈视图中,堆栈视图的对齐方式 属性 设置为 center(为了堆栈中的其他视图)。这导致自动布局在计算 table 视图的 width 时出现问题。

此处的解决方案是从 table 视图向堆栈视图添加一个等宽约束。 Et voila!table 视图单元格内容视图中的 UIView 错误消失了。