【问题标题】:Horizontal UILabels inside a self sizing UITableViewCell自调整大小的 UITableViewCell 中的水平 UILabels
【发布时间】:2016-03-23 17:28:59
【问题描述】:

问题:如何在 UITableViewCell 中使用 UITableViewAutomaticDimension 中的约束,当标签并排时,每个标签可以包含不同数量的行?

我有一个表格,其中包含并排包含标签的单元格:

如果一侧的标签比另一侧的相应标签有更多行,我很难让单元格正确调整大小。其中一个标签总是被切断。如果两个标签的行数相同,则单元格会完美调整大小并且可以看到所有文本。

我已经尝试了许多约束调整,但没有一个可以按预期完美运行。

我尝试为高度添加隐藏标签...但它不适用于具有 4 个标签的单元格 我已经尝试将标签放置在视图中,但仍然需要计算视图的高度。

目前约束设置正常:top、bottom、left、right,标签设置为 0 行等,当两个标签具有相同的文本或相同的行数时效果很好。

有什么办法可以在约束条件下做到这一点?或者我是否需要在索引路径处恢复到行的旧高度? =(

【问题讨论】:

    标签: ios objective-c uitableview uitableviewautomaticdimension


    【解决方案1】:

    有一种方法可以仅使用约束来实现您想要做的事情。诀窍是将两个较低标签和底部之间的约束关系设置为Greater Than or Equal 而不是equal

    这是我设置约束的方式:

    哪个有这个结果:

    或者您可以将标签顶部和底部之间的约束设置为Greater Than or Equal,并将底部约束保留在equal

    要得到这个结果:

    【讨论】:

      【解决方案2】:

      我找到了一个解决方案,我不必重新使用 tableView:heightForRowAtIndexPath。

      我在单元格中添加了一个标签,将文本颜色设置为 clearColor,并将其命名为“heightLabel”。我为 heightLabel 添加了约束,因此单元格将根据 heightLabel 的约束调整大小。

      然后,无论是左侧标签还是右侧标签中的文本最多,我都会将该标签的文本放在 heightLabel 中。

      单元格仍未调整大小,我必须在单元格上调用“layoutIfNeeded”,然后在 tableView:cellForRowAtIndexPath 中返回单元格。

      现在使用 heightLabel 约束来调整单元格的大小,并且 UITableViewAutomaticDimensions 工作正常。

      这可能不是最好的解决方案,但效果很好。如果有更合适的方法,我愿意接受建议。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多