如何清除NSLayoutManager.drawGlyphsForGlyphRange(...)的影响?

时间:2015-03-14 21:01:16

标签: cocoa nsview appkit nslayoutmanager nstextstorage

我有一个NSView元素,主要用于在NSScrollView内滚动时绘制不同的文字。我使用NSTextStorage, NSLayoutManager and NSTextContainer的三重奏来显示文本,以下是在drawRect方法中绘制文本的调用:

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

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

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

A)在绘制文本之前在NSRectFill中调用drawRect - 这有效地描绘了之前的文本并且非常简单。在每个卷轴上反复绘制相同的背景似乎是浪费。

B)查看NSView.prepareForReuse() - 这种方法似乎更适合您想要"擦拭"现有对象的全部内容重用并从不同的状态开始。在我的场景中,它只是我想要摆脱的NSLayoutManager中的前一个文本。

C)其他一些方法?

0 个答案:

没有答案