自调整大小的 UITableViewCell 中的水平 UILabels
Posted
技术标签:
【中文标题】自调整大小的 UITableViewCell 中的水平 UILabels【英文标题】:Horizontal UILabels inside a self sizing UITableViewCell 【发布时间】:2016-03-23 17:28:59 【问题描述】:问题:如何在 UITableViewCell 中使用 UITableViewAutomaticDimension 中的约束,当标签并排时,每个标签可以包含不同数量的行?
我有一个表格,其中包含并排包含标签的单元格:
如果一侧的标签比另一侧的相应标签有更多行,我很难让单元格正确调整大小。其中一个标签总是被切断。如果两个标签的行数相同,则单元格会完美调整大小并且可以看到所有文本。
我已经尝试了许多约束调整,但没有一个可以按预期完美运行。
我尝试为高度添加隐藏标签...但它不适用于具有 4 个标签的单元格 我已经尝试将标签放置在视图中,但仍然需要计算视图的高度。
目前约束设置正常:top、bottom、left、right,标签设置为 0 行等,当两个标签具有相同的文本或相同的行数时效果很好。
有什么办法可以在约束条件下做到这一点?或者我是否需要在索引路径处恢复到行的旧高度? =(
【问题讨论】:
【参考方案1】:有一种方法可以仅使用约束来实现您想要做的事情。诀窍是将两个较低标签和底部之间的约束关系设置为Greater Than or Equal
而不是equal
。
这是我设置约束的方式:
哪个有这个结果:
或者您可以将标签顶部和底部之间的约束设置为Greater Than or Equal
,并将底部约束保留在equal
:
要得到这个结果:
【讨论】:
【参考方案2】:我找到了一个解决方案,我不必重新使用 tableView:heightForRowAtIndexPath。
我在单元格中添加了一个标签,将文本颜色设置为 clearColor,并将其命名为“heightLabel”。我为 heightLabel 添加了约束,因此单元格将根据 heightLabel 的约束调整大小。
然后,无论是左侧标签还是右侧标签中的文本最多,我都会将该标签的文本放在 heightLabel 中。
单元格仍未调整大小,我必须在单元格上调用“layoutIfNeeded”,然后在 tableView:cellForRowAtIndexPath 中返回单元格。
现在使用 heightLabel 约束来调整单元格的大小,并且 UITableViewAutomaticDimensions 工作正常。
这可能不是最好的解决方案,但效果很好。如果有更合适的方法,我愿意接受建议。
【讨论】:
以上是关于自调整大小的 UITableViewCell 中的水平 UILabels的主要内容,如果未能解决你的问题,请参考以下文章
自定义 UITableViewCell 根据屏幕大小调整大小
调整 UILabel 的大小以适应自定义 UITableViewCell 中的文本,无论宽度如何
自我调整大小的 UITableViewCell 中的 UIlabel 和 UIView 高度计算
在自定义 UITableViewCell 中调整 UITextView 的大小