在Swift中为可重用的UITableViewCell添加约束

时间:2015-06-24 07:15:05

标签: ios swift uitableview

我正在开发一款能够显示不同运动项目运动成绩的应用。排名表应根据其长度为其内容提供动态宽度。目前它都是固定宽度,但是当其中一列有大量文本时,它会在最后被裁剪:

+-----------------------------+
|          Goals    Diff   Sc |
+--------+-------+-------+----+
| Team 1 |   152 | 15... | 53 | // Should be 152:xxx
+--------+-------+-------+----+
| Team 2 |   146 | 14... | 53 | // Should be 145:xxx
+--------+-------+-------+----+
| Team 3 |    41 | 41... | 53 | // Should be 41:xxx
+--------+-------+-------+----+

相反,它应分析每个列的最大单元格宽度,并根据该宽度调整其宽度。如果单元格太宽,它们应该向左移动,而不是裁剪团队的名称(实际上,如果太小则会自动换行)。

+-----------------------------+
|          Goa      Diff   Sc |
+--------+-----+---------+----+
| Team 1 | 152 | 152:xxx | 53 |
+--------+-----+---------+----+
| Team 2 | 146 | 145:xxx | 53 |
+--------+-----+---------+----+
| Team 3 |  41 |  41:xxx | 53 |
+--------+-----+---------+----+

我还必须决定究竟如何处理单元格标题,但这是另一个问题。

我已经尝试过计算单元格宽度,将它们相互比较,然后创建一个每列最大宽度的数组,这样可以正常工作。但是,它需要相当多的计算,因为它为每行中的每个列手动创建标签,在其上调用sizeToFit(),然后将其宽度与目前的最大宽度进行比较。我无法相信这是唯一的方法。

然后我在每个tableView(:cellForRowAtIndexPath:)上使用这个宽度数组来为出列的可重用表格视图单元格添加约束(以及它们中的三个/多少是标签之一)。同样,在方法的每次调用中必须创建3个约束对我来说似乎不是最佳的。

有没有更简单的方法?是否已经存在我缺少的内置函数(或者可能只是一个库)?

0 个答案:

没有答案