我想格式化单元格的 textLabel 以在两行上显示文本,并用换行符确定第二行的开始位置。我的问题是,由于我不控制第一行中的文本,有时第一行的文本会溢出到第二行,而我的第二行文本根本不显示。指定 UILineBreakModeWordWrap 实际上有时甚至将一个单词分成两部分来换行,这是没有意义的(我使用第一行作为名称)。我需要两行和两行仅用于这个标签,因为这就是这个特定单元格中的全部空间。我已经将 detailTextLabel 用于其他用途。我真的不想为此创建一个自定义单元格。有可能做我要求的吗?
问问题
738 次
1 回答
1
这是你可以做的:
你可以把你的长字符串,用 componentsSeparatedByString 分成两部分,取每一块,使用迭代 sizeWithFont:constrainedToSize:lineBreakMode 来计算符合默认 textLabel 宽度的最长字符串,然后取你的两个新制作的字符串并附加一个'\n' 字符。将其用作您的 textLabel 文本。
那应该可以实现您想要做的事情。但我强烈推荐给你的是你帮自己一个忙,去定制。出于多种原因:
- 是的,创建自定义单元格通常需要更长的时间。但是,我认为在这种特殊情况下,定制比实现上述方法要快。上面的实现甚至没有考虑到截断字符串末尾的省略号。你可以把它混在一起,但这只会增加更多的时间和复杂性。使用自定义单元格和单独的标签,这样的事情就变成了一个礼物。
- 自定义允许您轻松地为两行文本指定自己的字体/大小。使用 IB,这些领域的基本样式变得轻而易举。这是一个非常漂亮的奖金。特别是对于您的用户。您提到第一行文本用于名称 - 为什么不将其加粗以更好地将其与第二行文本区分开来?
- 如果您计划在未来创建和发布 iOS 应用程序,您将制作大量自定义单元格。为什么不把这个当作练习呢?
如果您需要有关创建自定义单元格的指导,这是一个非常全面的教程。
于 2013-09-05T07:06:41.613 回答