如何在 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。
我正在编写一个应用程序,我希望其中有一种默认颜色,然后用户可以用自己的选择覆盖它。这在 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。