我有一个NSView
元素,主要用于在NSScrollView
内滚动时绘制不同的文字。我使用NSTextStorage, NSLayoutManager and NSTextContainer
的三重奏来显示文本,以下是在drawRect方法中绘制文本的调用:
layoutManager.drawGlyphsForGlyphRange(glyphRange, atPoint: NSMakePoint(0, 0))
我所看到的是,在对drawRect
的连续调用中,它覆盖了在旧文本之上绘制的新文本,从而有效地在视觉上创建了一大堆文本。
清除上次调用drawRect时绘制的文本的最佳方法是什么,特别是在记住滚动性能时:
A)在绘制文本之前在NSRectFill
中调用drawRect
- 这有效地描绘了之前的文本并且非常简单。在每个卷轴上反复绘制相同的背景似乎是浪费。
B)查看NSView.prepareForReuse()
- 这种方法似乎更适合您想要"擦拭"现有对象的全部内容重用并从不同的状态开始。在我的场景中,它只是我想要摆脱的NSLayoutManager
中的前一个文本。
C)其他一些方法?