【问题标题】:Two Lines in UITableViewCell's textLabel with new line being determined ONLY by newline character in textUITableViewCell 的 textLabel 中的两行,新行仅由文本中的换行符确定
【发布时间】:2013-09-03 17:59:46
【问题描述】:

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

【问题讨论】:

  • 如果第一行太长,你想要什么行为?
  • 如果第一行太长,我想截断它。我知道我可能需要做一个自定义单元格,但我发现对于这么简单的要求来说太乏味了。特别是因为就框架而言,我没有“默认”单元格布局。使用自定义单元格时需要考虑很多额外的事情。
  • 也许尝试修改 detailTextLabel 使其看起来与其他标签完全一样,只将顶部标签作为顶行,而 detailTextLabel 在底部?它会将您从自定义单元格中拯救出来。
  • 这行得通,除了我需要 detailTextLabel 来做其他事情。似乎 Apple 会做一个 UILineBreakModeNewlineCharacter...

标签: ios uitableview newline line-breaks


【解决方案1】:

你可以这样做:

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

这应该可以实现您想要做的事情。 但我强烈推荐给你的是你帮自己一个忙,去定制。 出于多种原因:

  1. 是的,创建自定义单元格通常需要更长的时间。但是,我认为在这种特殊情况下,定制比实现上述方法要快。上面的实现甚至没有考虑到截断字符串末尾的省略号。你可以把它混在一起,但这只会增加更多的时间和复杂性。使用自定义单元格和单独的标签,这样的事情就变成了一个礼物。
  2. 自定义允许您轻松地为两行文本指定自己的字体/大小。使用 IB,这些领域的基本样式变得轻而易举。这是一个非常漂亮的奖金。特别是对于您的用户。您提到第一行文本用于名称 - 为什么不将其加粗以更好地将其与第二行文本区分开来?
  3. 如果您计划在未来创建和发布 iOS 应用程序,您将制作大量自定义单元格。为什么不将此作为练习?

如果您需要有关创建自定义单元格的指导,请this is a pretty thorough tutorial

【讨论】:

  • 谢谢四。这是一个很好的答案。我以前制作过自定义单元格,但复杂性来自诸如用于滑动删除的内容视图框架等。我想我将不得不对这个进行自定义。但如果我决定不这样做,我确实喜欢你的建议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-08
  • 1970-01-01
  • 2012-08-12
相关资源
最近更新 更多