IOS相当于Android的Paint.breakText()

时间:2011-03-25 16:05:46

标签: iphone android objective-c ios

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

我有一个放在矩形中的字符串。如果它不合适,我需要找到要用省略号替换的字符的索引并删除字符串的其余部分。

修改

正如詹姆斯贝德福德的回答暗示,这个问题可以通过添加UIKit NSString来解决。

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

UILineBreakModeTailTruncation与绘图一起使用时,会在字符串末尾添加省略号。

2 个答案:

答案 0 :(得分:4)

我知道这不是你要求的,但最简单的方法是使用UILabel,将它设置为multiLine,然后它将为你截断并椭圆化。

现在已经说过了,你可以使用CoreText做你想做的事情。 CTFrameSetter和TypeSetters可以提供包含索引的换行信息。

我提供了一个示例,但我还没有使用过这些类。

答案 1 :(得分:3)

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

修改

我能做的最好的事情是编写一个算法,使用这些sizeWithFont:方法尝试所需字符串的每个长度,直到字符串无法再装入框中。此时,您知道需要返回三个字符才能为省略号留出空间。您应该能够将此算法优化为O(log(n))。