我正在使用NSLayoutManager, NSTextStorage & NSTextContainer的三重奏在一个层支持的NSView中呈现文本。
我的印象是,如果我可以重写wantsUpdateLayer来返回true,从而更充分地使用层,视图就会更有表现力。是真的吗?
但是,我看到的使用NSLayoutManager的所有示例都表明,您需要在drawRect中放置以下调用
layoutManager.drawGlyphsForGlyphRange(glyphRange, atPoint: NSMakePoint(0, 0)) 您将如何在updateLayer 或其他更面向层的地方执行等效的调用?
发布于 2015-03-18 05:12:08
我创建了一个自定义CALayer并覆盖了drawInContext方法,如下所示:
override func drawInContext(ctx: CGContext!) {
NSGraphicsContext.saveGraphicsState()
var nsgc = NSGraphicsContext(CGContext: ctx, flipped: false)
NSGraphicsContext.setCurrentContext(nsgc)
NSColor.whiteColor().setFill()
NSRectFill(NSMakeRect(0, 0, 84, 24))
lm.drawGlyphsForGlyphRange(glyphRange, atPoint: NSMakePoint(0, 0)) // location of textContainer
NSGraphicsContext.restoreGraphicsState()
}这就完成了任务,但是
updateLayer方法中如何实现同样的目标,因为它没有上下文可供使用。https://stackoverflow.com/questions/29080694
复制相似问题