Toggle
A control that toggles between on and off states.
Declaration
struct Toggle<Label> where Label : ViewMentioned in
Overview
You create a toggle by providing an isOn binding and a label. Bind isOn to a Boolean property that determines whether the toggle is on or off. Set the label to a view that visually describes the purpose of switching between toggle states. For example:
@State private var vibrateOnRing = false
var body: some View {
Toggle(isOn: $vibrateOnRing) {
Text("Vibrate on Ring")
}
}For the common case of Label based labels, you can use the convenience initializer that takes a title string (or localized string key) and the name of a system image:
@State private var vibrateOnRing = true
var body: some View {
Toggle(
"Vibrate on Ring",
systemImage: "dot.radiowaves.left.and.right",
isOn: $vibrateOnRing
)
}For text-only labels, you can use the convenience initializer that takes a title string (or localized string key) as its first parameter, instead of a trailing closure:
@State private var vibrateOnRing = true
var body: some View {
Toggle("Vibrate on Ring", isOn: $vibrateOnRing)
}For cases where adding a subtitle to the label is desired, use a view builder that creates multiple Text views where the first text represents the title and the second text represents the subtitle:
@State private var vibrateOnRing = false
var body: some View {
Toggle(isOn: $vibrateOnRing) {
Text("Vibrate on Ring")
Text("Enable vibration when the phone rings")
}
}Styling toggles
Toggles use a default style that varies based on both the platform and the context. For more information, read about the automatic toggle style.
You can customize the appearance and interaction of toggles by applying styles using the toggleStyle(_:) modifier. You can apply built-in styles, like switch, to either a toggle, or to a view hierarchy that contains toggles:
VStack {
Toggle("Vibrate on Ring", isOn: $vibrateOnRing)
Toggle("Vibrate on Silent", isOn: $vibrateOnSilent)
}
.toggleStyle(.switch)You can also define custom styles by creating a type that conforms to the ToggleStyle protocol.
Topics
Creating a toggle
Creating a toggle for a collection
init(_:sources:isOn:)init(sources:isOn:label:)init(_:image:sources:isOn:)init(_:systemImage:sources:isOn:)