2011-03-25 70 views
3

我正在寻找相当于Android的Paint.breakText()的iOS目标c。IOS相当于Android的Paint.breakText()

我有一个字符串被放在一个矩形。如果不适合,我需要找到用省略号代替的字符的索引,然后放下字符串的其余部分。

编辑:

截至,这个问题可以用UIKit的NSString的补充来解决詹姆斯贝德福德的回答提示。

[foo drawInRect:someRect withFont:someFont 
    lineBreakMode:UILineBreakModeTailTruncation]; 

UILineBreakModeTailTruncation,与附图一起使用时,将省略号添加到字符串的末尾。

+0

NSString?或UITextView?或UITextField?需要更多。你想确保不超过一定的宽度? – 2011-03-25 16:08:11

回答

3

您是否尝试过在NSString UIKit Additions category, referenced here中使用sizeWithFont:方法?

编辑:

尽我所能得到的是写试图想要使用这些sizeWithFont:方法,直到字符串可以不再被安装到框中的字符串的长度每一种算法。此时,您知道您需要返回三个字符才能留出省略号的空间。您应该能够将此算法优化为O(log(n))。

+0

我一直在使用UIKit新增功能,但是我没有看到如何使用这些方法中的任何一种将省略号添加到修剪或截断的字符串。 – Axle 2011-03-25 16:20:39

+0

编辑答案.. – 2011-03-25 16:39:06

+0

要添加省略号,请使用:[NSString stringWithFormat:@“%@ ...”,myTruncatedString]; – 2011-03-25 16:46:44

4

我知道这不是你要求的,但最简单的方法是使用UILabel,将其设置为multiLine,然后它会截断和ellipsize为你。

现在说了这些,你可以使用CoreText来做你想做的事情。 CTFrameSetter和TypeSetters可以提供带有索引的换行信息。

我会举一个例子,但我还没有使用这些类。

+2

关于UILabel的很好的一点。如果你可以使用这个,这可能是最好的方法。 – 2011-03-25 16:53:03