代码之家  ›  专栏  ›  技术社区  ›  Geek

带有自动布局的tableView中的标签高度问题

  •  0
  • Geek  · 技术社区  · 10 年前

    我使用自动布局。我在自定义UITableViewCell中显示2个标签。 Label1 高于 Label2 。它们的文本是动态的。

    问题是其中一个标签显示时的高度大于其文本。 我试着改变他们 Content Hugging Priority .

    如果优先级相同或 标签1 的优先级更高 标签1 具有精确的高度以适合其文本,但 标签2 具有大于所需的高度。以及何时 标签2 拥抱的优先级高于问题的优先级 标签1 的高度。

    知道怎么解决吗?

    2 回复  |  直到 10 年前
        1
  •  0
  •   Community Egal    7 年前

    看起来您希望根据自动布局的约束信息自动调整单元格大小,但是 UITableView 使用框架/自动调整掩码调整其单元格大小。如果这是预期的,并且您没有像中那样自动调整单元格大小 this question ,那么您的标签将要么强制剪裁自己,以便以表视图中给定的大小嵌入单元格,要么增长以满足所有边距限制。

    由于内容拥抱和内容压缩阻力优先级值小于所需(小于1000),因此它们被视为“可选”,并且将尽可能接近,而不会违反任何其他所需约束。这就是为什么您的标签开始增长(或剪切自身)。

    这可以在我脑海中用两种方式解决:

    1. 如果您不关心单元格具有可变高度,并且标签朝着单元格顶部迁移,则不需要将底部标签固定到超级视图下边缘的约束。更具体地说,使该约束的优先级低于垂直约束 contentHuggingPriority 对于这两个标签。这样,包含优先级约束的内容将优先于较低的约束。
    2. 使单元格自动调整大小(使用 auto layout 或其他),使得系统不必考虑垂直 内容调整优先级 每个标签的“可选”。
        2
  •  -1
  •   Geek    10 年前

    我在尝试了很多东西之后解决了这个问题。我唯一要做的就是 将水平和垂直内容压缩阻力优先级设置为所需 即1000。 我对所有标签都这样做,因为我不希望任何标签调整其内容。

    还有一件事太重要了 获得正确的单元格高度 。如果在计算自定义单元格的高度时甚至有1pt的错误,则不会按预期显示。

    提示:

    1. 若任何视图的高度大于预期,则可能计算出的单元格高度大于实际需要的高度。
    2. 若任何视图垂直缩小或不显示整个内容,则计算的单元格高度可能小于实际需要的高度。

    Yoy可以通过在为单元格计算的高度(变量)上添加/删除常量值来测试高度是否错误。