繁体   English   中英

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

[英]Two Lines in UITableViewCell's textLabel with new line being determined ONLY by newline character in text

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

您可以执行以下操作:

您可以将长字符串取出,用componentsSeparatedByString分成两部分,取出每一块,使用迭代的sizeWithFont:constrainedToSize:lineBreakMode来计算适合默认textLabel宽度的最长字符串,然后取两个新制作的字符串并在其后附加一个'\\ n'字符。 使用它作为您的textLabel文本。

那应该可以实现您想要的目标。 但我强烈建议您,帮自己一个忙,习惯。 由于多种原因:

  1. 是的,自定义单元格通常需要更长的时间才能创建。 但是,我认为在这种特殊情况下,自定义比实现上述方法要快。 上面的实现甚至不考虑截断字符串末尾的省略号。 您可以将其混合使用,但这只会增加更多的时间和复杂性。 使用自定义单元格和单个标签,类似这样的东西就成为了gimme。
  2. “自定义”使您可以轻松地给两行文本使用自己的字体/大小。 使用IB,这些字段的基本样式变得轻而易举。 那是一笔相当可观的奖金。 特别适合您的用户。 您提到文本的第一行是用于名称的-为什么不将其加粗以更好地将其与文本的第二行区分开?
  3. 如果您打算将来创建和发布iOS应用,那么您将要制作很多自定义单元。 为什么不使用这一做法呢?

如果您需要有关创建自定义单元格的指导, 这是一个非常详尽的教程

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM