我有一个带有自定义 NSTableViewRows 的 NSOutlineView。
我已经覆盖了 NSTableViewRow 上的 draw 方法:
override func draw(_ dirtyRect: NSRect) {}
...所以它不应该画任何东西。但是,行有时是纯黑色,有时是清晰的。我无法确定何时的模式。
如果我确实在绘图函数中放置了一些东西,它会在它发生时绘制黑色,我似乎无法在绘图函数中清除黑色,除了填充纯色。
为了清除我已经尝试过:
let context = NSGraphicsContext.current?.cgContext
context?.clear(dirtyRect)
和
NSColor.clear.setFill()
dirtyRect.fill(using: .copy)
如果我查看调试视图层次结构,我可以清楚地看到 NSTableViewRow 本身是黑色的。
我已经尝试设置 wantLayer 并在绘图函数中设置图层的背景颜色,但这没有效果。
谁能解释这个黑色填充物可能来自哪里以及它生活在哪里!
我设法确保它不存在的唯一方法是使用:
override var wantsUpdateLayer: Bool { get { return true } }
...这表明 NSTableViewRow 正在做一些奇怪的事情。