Dusk 是一个小型框架,旨在帮助在 macOS 上支持深色模式。 它对于使用全窗口主题或需要支持早期操作系统的应用程序尤其有用。
这个项目的完成很大程度上得益于两位人士的辛勤工作。
Paulo Andrade 关于 《采用深色模式和旧版 Mac》 的文章对于理解如何子类化 NSColor
非常有帮助。
Daniel Jalkut 发表了一个关于 在 macOS 上采用深色模式 的精彩系列文章。 他提出的许多想法,甚至一些代码,都被应用到了这个项目中。
Swift 包管理器
dependencies: [
.package(url: "https://github.com/ChimeHQ/Dusk", from: "1.1.4")
]
DynamicColor
一个方便的 NSColor
子类,使在无法将颜色存储在资源目录中时更容易使用动态颜色。 它提供了两个 API,一个模仿 NSColor(name:dynamicProvider:)
,另一个让您可以更轻松地定义 NSColor
实例的浅色和深色变体。
DynamicColor(name: "uniqueColorName") { (appearance) in
...
}
DynamicColor(name: "uniqueColorName", lightColor: NSColor.white, darkColor: NSColor.black)
AppearanceObserver
一个非常简单的类,它将观察有效的外观更改并在触发时发布通知。 当在 NSApplication
委托中创建用于应用程序范围的通知时非常有用。
查询
appearance.isDark
appearance.oppositeAppearance
NSAppearance.withCurrent(.aqua) {
...
}
我很乐意听到您的声音! 通过 issue 或 pull request 与我联系。
我更喜欢协作,并且如果您有类似的项目,我很乐意找到合作的方式。
为了提高可访问性,我更喜欢使用制表符进行缩进。 但是,我宁愿您使用您想要的系统并提交 PR,也不愿因为空格而犹豫不决。
通过参与本项目,您同意遵守《贡献者行为准则》。