如何在 macOS SwiftUI 应用程序中覆盖强调色(在代码中)?

How to overwrite the accent color (within the code) in a macOS SwiftUI application?

我正在编写一个应用程序,我希望其中有一种默认颜色,然后用户可以用自己的选择覆盖它。这在 iOS 中有效,但我意识到 macOS 版本不允许我覆盖强调色。

为了演示这个,我创建了一个迷你项目并将资产设置为粉红色,这样强调颜色是什么就很明显了(如果我不这样做会注意到它只是保持默认的蓝色)

然后我向主 ContentView 添加了一个简单的列表,这样我就可以看到强调色了。我的代码是:

struct ContentView: View {
let myListitems = [
    "one", "two", "another", "and more"
]
@State var selectedItem:String?
var body: some View {
    VStack {
        Text("Hello, world!")
            .padding()
        List(myListitems, id: \.self, selection: $selectedItem) { item in
            Text(item)
        }
    }
}
}

然后我尝试在主 WindowGroup 部分和(单独)在 ContentView 页面上将强调色设置为蓝色。既不影响粉色口音。

显示代码更改的图像:

您知道有什么方法可以覆盖这种强调色(无论是蓝色还是用户在资产中定义的颜色)?我希望用户能够更改整个应用程序的颜色,但现在甚至看不到如何影响视图。

感谢您的帮助

用户可以在系统偏好设置中通过更改强调色和突出显示颜色来实现,多色表示使用应用定义的颜色,其他颜色表示在每个应用中使用该颜色。您无需执行任何操作,开箱即用。

如果自定义 UI 元素需要它们,您可以通过 NSColor.controlAccentColor 和 NSColor.selectedContentBackgroundColor 引用这些颜色。据我所知,SwiftUI 只有 Color.accentColor 开箱即用,但您可以使用 NSColor 对象实例化 Color。