UITableViewCell的textLabel中的两行,新行仅由文本中的换行符确定

时间:2013-09-03 17:59:46

标签: ios uitableview newline line-breaks

我想格式化单元格的textLabel以在两行上显示文本,并使用换行符确定第二行的开始位置。我的问题是,由于我不控制第一行中的文本,有时第一行的文本溢出到第二行,我的第二行文本根本不显示。指定UILineBreakModeWordWrap实际上有时甚至会将一个单词分成两个来包装它,这没有任何意义(我使用名字的第一行)。我只需要两条线和两条线用于这个标签,因为在这个特定的单元格中只有空间。我已经在使用detailTextLabel了。我真的不想为此创建一个自定义单元格。可以做我要问的事吗?

1 个答案:

答案 0 :(得分:1)

这是你可以做的:

你可以把你的长字符串,用componentsSeparatedByString拆分成两个,取每个部分,使用迭代sizeWithFont:constrainedToSize:lineBreakMode来计算适合默认textLabel宽度的最长字符串,然后取两个新制作的字符串并追加它们带有'\ n'字符。将其用作textLabel文本。

这应该达到你想要做的。 但我强烈推荐给你的是你自己帮忙并定制。 出于多种原因:

  1. 是的,自定义单元格通常需要更长时间才能创建。但是,我认为在这种特殊情况下,定制比实现上述更快。上面的实现甚至没有考虑截断字符串末尾的省略号。你可以把它扔进混合物中,但这会增加更多的时间和复杂性。使用自定义单元格和单个标签,这样的东西变成了一种美元。
  2. 自定义允许您轻松地将两行文本设置为自己的字体/大小。使用IB,这些领域的基本样式变得轻而易举。这是一个非常光滑的奖金。特别为您的用户。你提到第一行文字用于名称 - 为什么不大胆地将它与第二行文字区分开来呢?
  3. 如果您打算在未来创建和发布iOS应用程序,那么您将会制作大量自定义单元格。为什么不用这个作为练习?
  4. 如果您需要有关创建自定义单元格的指导,this is a pretty thorough tutorial