我有一个NSAttributedString,我绘制成一个矩形(此处没有文本视图。)我允许用户resize
该矩形,从而强制文本换行到多行。一切都很好,我使用NSTextContainer等来确定给定宽度的文本边界高度。
我所面临的挑战是知道MINIMUM宽度是多少 - 这样我就不允许用户将矩形的大小调整为比字符串中最宽的character/glyph
更窄。
我有一个有效的解决方案,它涉及获取每个字形rect
的边界(boundingRectForGlyphRange
并跟踪最大字符 - 但这对于较大字符串来说是一个真正的性能杀手。
有人知道更好的方法吗?
由于
答案 0 :(得分:0)
当您选择字体和显示语言时,您可以编译所有可能的字形宽度的查找。先用最大的字形顺序排序,然后使用rangeOfString: != NSNotFound
;找到一个后断开(这是你的最大字形宽度)。
很难说性能差异是什么样的,但它可能比每次获取所有字形的宽度更快,因为它只是字符串比较而不是字体测量。