1

我有一个NSView元素被重用,主要用于绘制不同的文本,因为它们在NSScrollView. 我正在使用三重奏NSTextStorage, NSLayoutManager and NSTextContainer来显示文本,以下是在 drawRect 方法中绘制文本的调用:

layoutManager.drawGlyphsForGlyphRange(glyphRange, atPoint: NSMakePoint(0, 0))

我所看到的是,在连续调用drawRect它时,将要在旧文本之上绘制的新文本覆盖在视觉上有效地创建一大堆文本。

清除上次调用 drawRect 时绘制的文本的最佳方法是什么,特别是考虑到滚动性能:

NSRectFillA)在绘制文本之前调用drawRect- 这有效地绘制了先前的文本并且非常简单。在每个卷轴上一遍又一遍地绘制相同的背景似乎很浪费。

B)调查NSView.prepareForReuse()- 这种方法似乎更适合您想要“擦除”现有对象的全部内容以重用并从不同状态开始的场景。在我的场景中,这只是NSLayoutManager我想要删除的之前写的文本。

C)其他一些方法?

4

0 回答 0