NSAttributedString的MINIMUM边界矩形宽度

时间:2015-01-26 16:05:24

标签: ios macos nsattributedstring textkit

我有一个NSAttributedString,我绘制成一个矩形(此处没有文本视图。)我允许用户resize该矩形,从而强制文本换行到多行。一切都很好,我使用NSTextContainer等来确定给定宽度的文本边界高度。

我所面临的挑战是知道MINIMUM宽度是多少 - 这样我就不允许用户将矩形的大小调整为比字符串中最宽的character/glyph更窄。

我有一个有效的解决方案,它涉及获取每个字形rect的边界(boundingRectForGlyphRange并跟踪最大字符 - 但这对于较大字符串来说是一个真正的性能杀手。

有人知道更好的方法吗?

由于

1 个答案:

答案 0 :(得分:0)

当您选择字体和显示语言时,您可以编译所有可能的字形宽度的查找。先用最大的字形顺序排序,然后使用rangeOfString: != NSNotFound;找到一个后断开(这是你的最大字形宽度)。

很难说性能差异是什么样的,但它可能比每次获取所有字形的宽度更快,因为它只是字符串比较而不是字体测量。