深色模式:NSColor.colorNamed在某些方法中无法返回正确的颜色

时间:2018-11-03 23:20:25

标签: macos cocoa macos-darkmode

colorNamed通常对我有用,但是,我试图在NSTableViewRow.drawSeparatorInRect:内部调用它,即使系统处于暗模式,它也总是以浅色外观返回颜色。

- (void)drawSeparatorInRect:(NSRect)dirtyRect { [[NSColor colorNamed:@"ColorTransactionsGridLine"] set]; ... }

我不知道为什么colorNamed在这种情况下不起作用。有什么想法吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

我想出了这个。事实证明,父视图具有硬编码的外观,因此子视图继承了该外观,而不是系统的外观。在父视图中将外观更改为“继承”后,colorNamed返回正确的颜色。

答案 1 :(得分:0)

尝试在绘图代码之前添加它:

 NSAppearance.currentAppearance = self.effectiveAppearance;

或者,作为诊断措施,在图形代码中设置一个断点,并在调试器中检查这些属性的状态。