0

我有大量独特的字符串,当它们被布置在一个无限大的矩形中时,我想计算它们的边界矩形。目前我使用单个 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];
    ...
}

问题是:考虑到不需要绘制字符串,是否可以加快计算速度?我只对矩形的宽度和高度感兴趣。

4

1 回答 1

0

经过几天的测试,我自己回答了这个问题:不,不幸的是,没有更快的方法使用布局管理器。使用 CoreText 的速度似乎也快了两倍,但 CoreText 本身也有一些令人讨厌的问题。

于 2011-05-02T22:18:05.737 回答