我有大量的独特字符串,当我们将它们放置在一个无限大的矩形中时,我想要计算它们的边界矩形。目前我使用单个NSTextStorage / NSLayoutManager并循环遍历所有字符串,收集矩形:
// setup NSTextStorage and its NSLayoutManager, NSTextContainer
...
forall (NSAttributedString *astring in ...)
{
// put string into textstorage
[textStorage setAttributedString:astring];
// trigger glyph generation and layout
[textContainer setContainerSize: NSMakeSize (CGFLOAT_MAX, CGFLOAT_MAX)];
[layoutManager ensureLayoutForTextContainer: textContainer];
// finally get the bounding box
NSRect boundingBox = [layoutManager usedRectForTextContainer: textContainer];
...
}
问题是:考虑到不需要绘制字符串,是否可以加快计算速度?我只对矩形的宽度和高度感兴趣。
答案 0 :(得分:0)
经过几天的测试后,Jut自己回答了这个问题:不,不幸的是,没有更快的方式使用布局管理器。使用CoreText似乎也快两倍,但CoreText本身也存在一些令人讨厌的问题。