【问题标题】:Layout errors when pinning UIView edges to UITableViewCell contentView将 UIView 边缘固定到 UITableViewCell contentView 时出现布局错误
【发布时间】:2020-05-03 11:27:24
【问题描述】:

这里有一个问题让我发疯。

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

每当我这样做时,Xcode 中的 UIView 都会出现以下布局错误:

“需要约束:X 位置、宽度”

“需要约束:Y 位置、高度”

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

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

  • 行高:自动
  • 估计(行高):50

在表格视图单元格上:

  • 行高:50

我已经看到一些 SO 帖子和其他演练表明固定边缘是要做的事情,并且据我了解自动布局,我已经提供了必要的约束和信息。

我该如何解决这个问题?

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


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

【问题讨论】:

    标签: ios uitableview autolayout nslayoutconstraint


    【解决方案1】:

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

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

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


    编辑

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

    • 添加表格视图 - 为其提供所需的约束
    • 添加表格视图单元格原型
    • UIView 添加到该单元格(为其设置背景色以便于查看)
    • 在所有 4 条边上将视图约束为零(约束到边距)
    • 将单元格行高设置为 50(取消选中自动)

    这就是我的样子:

    【讨论】:

    • 我希望有一个固定高度的单元格。在这种情况下,如何设置表格视图以便单元格为其内容提供大小?
    • 感谢您提供更多信息。我认为这样做应该很简单,但事实证明我的问题是在视图层次结构上。
    【解决方案2】:

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

    表格视图被放置在垂直堆栈视图中,并且该堆栈视图的对齐属性设置为center(为了堆栈中的其他视图)。这导致自动布局在计算表格视图的宽度时出现问题。

    这里的解决方案是将表视图中的等宽约束添加到堆栈视图。 瞧!表格视图单元格内容视图中的 UIView 上的错误消失了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多