自定义UITableViewCell内的水平UILabel

时间:2016-03-23 17:29:00

标签: ios objective-c uitableview uitableviewautomaticdimension

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

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

tablecells with horizontal labels

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

我已经尝试了一些约束调整,但没有任何方法可以完美地运行。

我尝试为高度添加隐藏标签......但对于带有4个标签的单元格,它不能很好地工作 我已经尝试将标签放在视图中,但是仍然需要计算视图的高度。

目前正常设置约束:顶部,底部,左侧,右侧,标签设置为0行等,当两个标签具有相同的文本或相同的行数时,效果很好。

有什么方法可以用约束来做到这一点吗?或者我是否需要在索引路径中恢复到行的旧高度? =(

2 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,我没有必要恢复使用tableView:heightForRowAtIndexPath。

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

然后左侧或右侧标签中的文本最多,我将该标签的文本放在heightLabel中。

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

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

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

答案 1 :(得分:0)

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

以下是我设置约束的方法:

enter image description here

结果如下:

enter image description here

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

enter image description here

要获得此结果:

enter image description here