基于动态标签高度的 iOS8 动态单元格高度

Posted

技术标签:

【中文标题】基于动态标签高度的 iOS8 动态单元格高度【英文标题】:iOS8 Dynamic Cell Height based on Dynamic Label height 【发布时间】:2015-01-30 03:07:40 【问题描述】:

我正在尝试构建一个遵循以下内容的提要:

左上角是用户名,右上是时间戳。正下方是一个描述符,然后向下的第三个标签是动态帖子正文。底部的两个按钮每个都可以改变上面的标签。

我正在尝试完成两件事:我已成功使用自动布局将左上角的标签限制在左上角和左上角。我已经成功地使用自动布局将右上角的标签限制在顶部和右侧。我在左上角布局上设置了明确的宽度,因此如果用户名太长,它将在右上角标签之前截断。 第一个问题:是否可以使宽度动态化,以使右上角的标签保持贴在单元格的顶部和右侧部分,并且如果左上角的标签距离右上角的标签在一厘米以内,则截断左上角的标签?这对于不同的屏幕尺寸很重要。

下一步:我已经成功地建立了动态​​高度标签(从顶部向下的第 3 个),通过将其限制在左右边距来具有整个单元格的宽度。我也尝试将它限制在底部,但这是我遇到大问题的地方。如果文本太长,文本会泄漏到下一个单元格中。我知道为什么会发生这种情况,但我不知道如何解决。

如果我没有:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 
        return 128

在我的代码中,然后我遇到了这样的情况:“仅警告一次:检测到约束模糊地建议 tableview 单元格的内容视图高度为零的情况。我们正在考虑意外折叠并使用标准高度而是。”

但是,当我将该代码放入视图控制器时,标签确实具有动态高度,但由于每一行的高度是恒定的,因此它会泄漏。我不知道如何减轻这种情况,因为没有那条线,所述警告使用标准高度代替,它将我所有的标签和按钮都集中在一起(然后由于某种原因,动态标签文本不再具有动态高度,但符合一行)。

我该如何解决这个问题?我对此感到困惑并坚持了很长时间。

【问题讨论】:

【参考方案1】:

第一个问题:是的。您需要使用不同的水平压缩阻力优先级。您可能还需要较低优先级的不等式来设置限制。

第二个问题:问题是您没有完全确定高度。从单元格的顶部到单元格的底部必须有约束,以便单元格的高度由内向外严格地由其内容决定。

【讨论】:

如何处理优先事项?【参考方案2】:

要为单元格设置动态高度,只需为其标签设置动态高度和宽度。 通过设置

    标签的内容拥抱优先级小于1000。 并且还要避免设置标签的高度和宽度约束。 只需设置 Top、left 的约束,如果底部元素可用 然后还要设置底部约束。

【讨论】:

以上是关于基于动态标签高度的 iOS8 动态单元格高度的主要内容,如果未能解决你的问题,请参考以下文章

具有自动布局的 UITableView 中的动态单元格高度

iOS8“现在”改变动态单元格的高度,重新内部单元格内容

根据单元格OBjective-C中的标签文本(动态)增加单元格高度

显示更多按钮操作的动态标签和单元格高度

单元格标签中的最后一行不会出现自动布局和动态单元格高度

UITableView 动态单元格高度在过渡或旋转时中断