2015-11-04 69 views
-1

我有以下4 Labels在自定义TableViewCell目前看起来是这样:成长TableViewCell高度与包装标签

我有这样的:

enter image description hereenter image description here

第一,第三和第四个标签的宽度约束固定,最大行数设置为1.第二个Label填充标签1和3之间的水平空间。

我想第二Label换到一个最大的2条线,并且使得每个标签的第一行对齐这样垂直对齐顶端:

我想这样的:

enter image description here

我已将每个标签的背景颜色设置为灰色,以便可以看到约束条件。

+0

除非你想潜水深,做大量的计算,已经在SO讨论了很多,使用单行标签之一,以“措施”最大限度地为第二高度标签,并让它限制行数。大写字母的第三个标签看起来不错,大约2.2的倍数应该可以做到。可能还想要将所有标签设置为多行以具有相同的插页。 –

回答

1

您可以使用自行调整大小的单元来实现此目的。为了使这项工作的两行添加到您的UITableview

tableView.rowHeight = UITableViewAutomaticDimension 
tableView.estimatedRowHeight = 50 

然后在Interface Builder设置在原型细胞以下限制:

取消选择所有约束“约束的利润”。

标签1:

  • 顶部:10
  • 左:10
  • 底部:greaterOrEqual 10
  • 宽度:60(或任何实际宽度)

标签2:

  • 顶部:10
  • 左:10
  • 底部:10

标签3:

  • 顶部:10
  • 左:10
  • 底部:greaterOrEqual 10
  • 宽度:60(或任何实际宽度)

标签4:

  • 顶部:10
  • 左:10
  • 右:10
  • 底部:greaterOrEqual 10
  • 宽度:60(或任何实际的宽度)

如果像这样设置约束,当第二个标签将文本换行到第二行时,单元格高度自动变高。

enter image description here

enter image description here

+0

完美!简单而直接。谢谢。 –

1

要顶部对齐UILabels,您可以将所有UILabel的页边距约束设置为常量,或设置顶部对齐约束。要设置顶部对齐约束,请选择标签并按住Ctrl并从标签拖动到另一个。从弹出框中选择顶部对齐。

需要注意的一点是,对于第二个标签,请将4个边距长度设置为5pt左右,但不要像其他宽度或高度那样限制其宽度或高度。

选择第二个标签后,最多可以在右侧实用程序面板中配置2行。

要动态更改单元格的高度有点棘手。首先,您应该知道文本是否足够长以将标签拉伸为2行和标签的高度。 (See Here)如果文本足够长以占用两行,则该方法将返回比通常大的高度值。在此基础上的高度变化,请使用以下的UITableViewDelegate动态改变的UITableViewCell的高度:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

希望这有助于。