在SwiftUI的macOS环境下,有没有一种简单的方法来可靠地检测窗口的背景颜色,无论当前主题(暗模式或亮模式)如何?
例如,如果要制作一个与窗口背景“融合”的实心矩形,该使用哪种颜色?
这个回答建议使用NSColor.xxxBackgroundColor
:
SwiftUI: Get the Dynamic Background Color (Dark Mode or Light Mode)
然而,对我来说这并不完全适用。下面是一些测试代码(Xcode 12.5,Swift 5.4),它生成了几个不同NSColor
的矩形。我正在寻找与背景融合的那一个。
struct TestView: View {
var body: some View {
VStack(spacing: 20) {
Text("This text is on the default background")
HStack(spacing: 30) {
Text("windowBackgroundColor")
.frame(width: 200, height: 100)
.background(Color(NSColor.windowBackgroundColor))
Text("underPageBackgroundColor")
.frame(width: 200, height: 100)
.background(Color(NSColor.underPageBackgroundColor))
Text("textBackgroundColor")
.frame(width: 200, height: 100)
.background(Color(NSColor.textBackgroundColor))
}
}
.padding(20)
}
}