SwiftUI 基础控件 - Toggle

623 阅读1分钟

Toggle 是 SwiftUI 中的一个开关控件,通常用于在开和关两种状态之间切换,比如用于设置项的开关(如启用/禁用通知)。它非常易于使用,并且支持自定义标签和样式。

基本使用

Toggle 需要一个绑定的布尔值来控制开关的状态,可以通过 @State 来绑定一个状态变量。

struct ContentView: View {
    @State private var isOn = true // 开关状态

    var body: some View {
        Toggle("自动备份", isOn: $isOn) // 绑定状态
            .padding()
    }
}

效果图如下:

截屏2024-11-13 11.03.44.png

在此例中,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 包含图标和文本。开关状态改变时,标签内容和颜色也会相应更新。

打开和关闭的效果图如下:

截屏2024-11-13 11.06.07.png

截屏2024-11-13 11.06.12.png

自定义样式

SwiftUI 提供了一些内置的 Toggle 样式(如 SwitchToggleStyle、CheckboxToggleStyle)。此外,你还可以创建自己的 Toggle 样式。要应用样式,可以使用 .toggleStyle 修饰符:

Toggle("Enable Feature", isOn: $isOn)
    .toggleStyle(SwitchToggleStyle(tint: .red)) // 使用红色开关
    .padding()

上面的代码中使用了 SwitchToggleStyle 并设置了开关颜色为红色。