【问题标题】:Dark Mode: NSColor.colorNamed doesn't return the right color in certain methods暗模式:NSColor.colorNamed 在某些方法中没有返回正确的颜色
【发布时间】:2018-11-03 23:20:24
【问题描述】:

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

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

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

谢谢。

【问题讨论】:

    标签: macos cocoa macos-darkmode


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      尝试在你的绘图代码之前添加这个:

       NSAppearance.currentAppearance = self.effectiveAppearance;
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-18
        • 2020-08-08
        • 1970-01-01
        • 2021-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多