swift - 在 SwiftUI 中设置切换颜色
问题描述
在遵循 Apple关于用户输入的教程后,我实现了一个切换。目前,它看起来像这样:
这是生成此 UI 的代码:
NavigationView {
List {
Toggle(isOn: $showFavoritesOnly) {
Text("Show Favorites only")
}
}
}
现在,我希望Toggle
's on -color 是蓝色而不是绿色。
我试过:
Toggle(isOn: $showFavoritesOnly) {
Text("Show Favorites only")
}
.accentColor(.blue)
.foregroundColor(.blue)
.background(Color.blue)
这些都不起作用,我找不到任何其他修饰符,例如tintColor
.
如何更改 a 的颜色Toggle
?
解决方案
SwiftUI 3.0
使用色调
引入了一个新的修改器,它也可以更改切换颜色:
Toggle(isOn: $isToggleOn) {
Text("Red")
Image(systemName: "paintpalette")
}
.tint(.red)
Toggle(isOn: $isToggleOn) {
Text("Orange")
Image(systemName: "paintpalette")
}
.tint(.orange)
SwiftUI 2.0
使用 SwitchToggleStyle
您现在只能在 SwiftUI 2.0 中为 on 位置设置色调颜色:
Toggle(isOn: $isToggleOn) {
Text("Red")
Image(systemName: "paintpalette")
}
.toggleStyle(SwitchToggleStyle(tint: Color.red))
Toggle(isOn: $isToggleOn) {
Text("Orange")
Image(systemName: "paintpalette")
}
.toggleStyle(SwitchToggleStyle(tint: Color.orange))
SwiftUI 1.0
使用切换样式
我创建了一个新的 ToggleStyle 来更改 Toggle 的三种颜色(打开颜色、关闭颜色和拇指)。
struct ColoredToggleStyle: ToggleStyle {
var label = ""
var onColor = Color(UIColor.green)
var offColor = Color(UIColor.systemGray5)
var thumbColor = Color.white
func makeBody(configuration: Self.Configuration) -> some View {
HStack {
Text(label)
Spacer()
Button(action: { configuration.isOn.toggle() } )
{
RoundedRectangle(cornerRadius: 16, style: .circular)
.fill(configuration.isOn ? onColor : offColor)
.frame(width: 50, height: 29)
.overlay(
Circle()
.fill(thumbColor)
.shadow(radius: 1, x: 0, y: 1)
.padding(1.5)
.offset(x: configuration.isOn ? 10 : -10))
.animation(Animation.easeInOut(duration: 0.1))
}
}
.font(.title)
.padding(.horizontal)
}
}
使用示例
Toggle("", isOn: $toggleState)
.toggleStyle(
ColoredToggleStyle(label: "My Colored Toggle",
onColor: .green,
offColor: .red,
thumbColor: Color(UIColor.systemTeal)))
Toggle("", isOn: $toggleState2)
.toggleStyle(
ColoredToggleStyle(label: "My Colored Toggle",
onColor: .purple))
来自 SwiftUI 书籍
推荐阅读
- python - Python 3 中的字符串比较
- git - 从 Azure 发布管道执行 Git 推送
- sql - 使用 SQL Server 中关于订单跟踪的“数据透视”将行转换为列
- windows - 当我们尝试删除 kafka 主题时,它只是显示为“标记为删除”
- sql-server - How to import unstructured Excel file into SQL Server (for example with SSIS)?
- json - 数组中的对象未定义
- python - tensorflow setup tool problem while installing in ubuntu16.04 LTS
- jenkins - RTC:每次启动相关的 Jenkins 构建时,工作区都会恢复
- matlab - MATLAB 的 TreeBagger 是否执行交叉验证?
- java - setTableEvent 设置器不再可用于带有 itext7 的表