我正在寻找与Android的Paint.breakText()等效的iOS objective-c 。

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

编辑:

正如James Bedford的答案所暗示的,可以通过添加UIKit NSString来解决此问题。

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

当与绘图结合使用时,UILineBreakModeTailTruncation将在字符串的末尾添加省略号。

最佳答案

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

编辑:

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

08-04 07:03