在遵循Apple 关于用户输入的教程之后,我实现了一个切换。当前,它看起来像这样:

这是产生此UI的代码:
NavigationView {
List {
Toggle(isOn: $showFavoritesOnly) {
Text("Show Favorites only")
}
}
}
Run Code Online (Sandbox Code Playgroud)
Now, I'd like the Toggle's on-color to be blue instead of green.
I tried:
Toggle(isOn: $showFavoritesOnly) {
Text("Show Favorites only")
}
.accentColor(.blue)
Run Code Online (Sandbox Code Playgroud)
.foregroundColor(.blue)
Run Code Online (Sandbox Code Playgroud)
.background(Color.blue)
Run Code Online (Sandbox Code Playgroud)
None of these worked and I wasn't able to find any other modifiers, such as tintColor.
How do I change the color of a Toggle?
如果我有一个SwiftUI Color:
let col: Color = Color(red: 0.5, green: 0.5, blue: 0.5)
Run Code Online (Sandbox Code Playgroud)
如何从中获取RGB分量col?
像这样:
print(col.components.red)
Run Code Online (Sandbox Code Playgroud)
在UIKit中,我可以使用,UIColor.getRed但SwiftUI中似乎没有等效项。
尝试将SwiftUI颜色更改为UIColor的实例。
我可以轻松地从UIColor中获取RGBA,但是我不知道如何获取“ Color”实例以返回相应的RGB和不透明度值。
@EnvironmentObject var colorStore: ColorStore
init() {
let red = //get red value from colorStore.primaryThemeColor
let green = //get red value from colorStore.primaryThemeColor
let blue = //get red value from colorStore.primaryThemeColor
let opacity = //get red value from colorStore.primaryThemeColor
let color = UIColor(red: red, green: green, blue: blue, alpha: opacity)
UINavigationBar.appearance().tintColor = color
}
Run Code Online (Sandbox Code Playgroud)
...或者也许有更好的方法来完成我想要的。