我NSTextStorage
里面有一个长文本(比如一本书中有 500 页,在当前字体的设备上超过 9000 页)。我以这种方式为文本容器分发此文本:
let textStorageLength = defaultTextStorage?.length ?? 0
while layoutManager!.textContainer(forGlyphAt: textStorageLength - 1,
effectiveRange: nil) == nil {
let textContainer = NSTextContainer(size: textContainerSize)
layoutManager!.addTextContainer(textContainer)
pagesCount += 1
}
问题是初始化所有这些容器等需要很长时间。我已经做了一些改进,比如从使用更改代码
while lastRenderedGlyph < layoutManager!.numberOfGlyphs {
和
lastRenderedGlyph = NSMaxRange(layoutManager!.glyphRange(for: textContainer))
cz 它的工作速度要慢得多。
那么,我还能做哪些其他改进?在 iPhone 7 上,启动大约需要 7 秒,在 iPhone 5s 上需要 20 秒 +
时间分析器显示,几乎所有时间都在获取 insertTextContainer 函数(addTextContainer)。
有什么建议么?