我正在寻找与Android Paint.breakText()相当的iOS目标c。
我有一个放在矩形中的字符串。如果它不合适,我需要找到要用省略号替换的字符的索引并删除字符串的其余部分。
修改
正如詹姆斯贝德福德的回答暗示,这个问题可以通过添加UIKit NSString来解决。
[foo drawInRect:someRect withFont:someFont
lineBreakMode:UILineBreakModeTailTruncation];
UILineBreakModeTailTruncation与绘图一起使用时,会在字符串末尾添加省略号。
答案 0 :(得分:4)
我知道这不是你要求的,但最简单的方法是使用UILabel,将它设置为multiLine,然后它将为你截断并椭圆化。
现在已经说过了,你可以使用CoreText做你想做的事情。 CTFrameSetter和TypeSetters可以提供包含索引的换行信息。
我提供了一个示例,但我还没有使用过这些类。
答案 1 :(得分:3)
您是否尝试过使用NSString UIKit Additions category, referenced here中的sizeWithFont:
方法?
修改强>
我能做的最好的事情是编写一个算法,使用这些sizeWithFont:
方法尝试所需字符串的每个长度,直到字符串无法再装入框中。此时,您知道需要返回三个字符才能为省略号留出空间。您应该能够将此算法优化为O(log(n))。