1

我之前问过如何将整个单词放在第二行(自动换行)。现在我对以下事情感兴趣。例如,我有这个字符串:“Lorem ipsummmmmm long title”并且我为标签设置了“setLineBreakMode”,除了一件事之外一切都很好。有些词很长,让我们假设我的字符串“ipsummmmmm”中的那个词不能在第一行,它在第二行。现在我遇到了问题,因为我为整个标签设置了长度超过 27 个字符的字符串,问题是第一行中只有“Lorem”,而其他三个单词将在第二行中。

我的子字符串代码:

mainArticleTitleLabel.text = [finalMainArticleTitle stringByAppendingString:@"..."];

有没有办法计算和解决这个问题,因为我在某个地方得到了 @"..." 而在某个地方只有删减词?

4

1 回答 1

2

我对如何做到这一点有一个想法,但这可能不是解决它的最快方法。

我的建议是将原始字符串分成一个单词数组。然后,您开始逐字重建字符串。添加一个词后,可以使用[sizeWithFont: constrainedToSize:] 方法,给标签宽度和一个很大的数字,即高度为10,000。一旦高度从 1 行跳到 2 行,那么您就知道第一行是什么。继续添加单词,直到你用完单词,或者打到第 3 行,然后你可以计算第 2 行的字符数。

我希望这可以解决您的问题,或者至少让您走上正轨。

于 2012-10-22T15:11:14.637 回答