You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在macOS AppKit中手动获取特定系统外观的NSColor?

在macOS AppKit中提取动态NSColor的特定外观值

要从资源中创建的动态NSColor(适配深浅模式)里手动获取指定外观下的具体颜色值,可通过NSColor的resolvedColor(for:)方法结合NSAppearance实现,对应UIKit的解决方案,适配macOS API的写法如下:

extension NSColor {
    /// 获取浅色模式下的颜色值
    var lightModeVariant: NSColor {
        resolvedColor(for: NSAppearance(named: .aqua)!)
    }
    
    /// 获取深色模式下的颜色值
    var darkModeVariant: NSColor {
        resolvedColor(for: NSAppearance(named: .darkAqua)!)
    }
}

用法示例

从资源目录获取动态颜色后,直接调用扩展属性即可:

guard let dynamicColor = NSColor(named: "Color") else { return }
// 强制获取深色模式配色(不受当前系统外观影响)
let darkModeColor = dynamicColor.darkModeVariant
// 强制获取浅色模式配色(不受当前系统外观影响)
let lightModeColor = dynamicColor.lightModeVariant

关键说明

  • AppKit通过NSAppearance管理外观上下文,.aqua对应标准浅色外观,.darkAqua对应标准深色外观。
  • 若你的颜色集适配了其他特殊外观(如高对比度模式),可传入对应的NSAppearance命名(例如.accessibilityHighContrastAqua)来获取对应配色。

内容的提问来源于stack exchange,提问作者Yiming Designer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 04:10:28