Toggle 是 SwiftUI 中的一个开关控件,通常用于在开和关两种状态之间切换,比如用于设置项的开关(如启用/禁用通知)。它非常易于使用,并且支持自定义标签和样式。
基本使用
Toggle 需要一个绑定的布尔值来控制开关的状态,可以通过 @State 来绑定一个状态变量。
struct ContentView: View {
@State private var isOn = true // 开关状态
var body: some View {
Toggle("自动备份", isOn: $isOn) // 绑定状态
.padding()
}
}
效果图如下:
在此例中,Toggle 的文本是 "自动备份",开关的状态由 @State 变量 isOn 控制。每当用户切换开关状态时,isOn 的值就会相应地更新。
Toggle 不仅支持文本,还可以支持图片或者更复杂的视图:
Toggle(isOn: $isOn) {
HStack {
Image(systemName: isOn ? "sun.max.fill" : "moon.fill")
.foregroundColor(isOn ? .yellow : .blue)
Text(isOn ? "Day Mode" : "Night Mode")
}
}
.padding()
在上面的示例中,标签使用 HStack 包含图标和文本。开关状态改变时,标签内容和颜色也会相应更新。
打开和关闭的效果图如下:
自定义样式
SwiftUI 提供了一些内置的 Toggle 样式(如 SwitchToggleStyle、CheckboxToggleStyle)。此外,你还可以创建自己的 Toggle 样式。要应用样式,可以使用 .toggleStyle 修饰符:
Toggle("Enable Feature", isOn: $isOn)
.toggleStyle(SwitchToggleStyle(tint: .red)) // 使用红色开关
.padding()
上面的代码中使用了 SwitchToggleStyle 并设置了开关颜色为红色。