How it works
AssistiveAccess is a scene that defines the interface your app presents while the device is running in Assistive Access mode — the iOS accessibility setting that strips the system down to a focused, high-contrast, large-target experience for people who benefit from reduced cognitive load. Returning an AssistiveAccess scene from your App lets you supply a purpose-built UI for that mode instead of having the system reflow your standard interface. Reach for it when your app needs a deliberately simplified screen — fewer controls, larger touch targets, plain language — that still drives the same underlying functionality. It complements, rather than replaces, the scenes (such as WindowGroup) that your app shows during normal operation.
Declare an
AssistiveAccessscene in your app bodyAdd an
AssistiveAccessscene alongside your regular scenes in theApp'sbody. The system activates it only while Assistive Access is engaged, so the view hierarchy you pass into it — here the centeredVStackof an icon, title, description, and a single action — is what people see in that mode.Supply the simplified content as a trailing closure
AssistiveAccesstakes a view-builder closure describing the screen to display. Keep it intentionally sparse: a clear focalImage(systemName:), a prominentText("Assistive Access")heading, and at most a small number of choices. The closure's root view becomes the content the mode renders.Favor large, legible controls inside the scene
Because Assistive Access emphasizes reachability and readability, size your elements generously within the scene's content. The example leans into this with
.font(.largeTitle.bold())and.font(.title3)for text and aButtonwhose label uses.frame(maxWidth: .infinity, minHeight: 64)so the tap target spans the width and stands tall.Make primary actions unmistakable
Limit the scene to one obvious next step and style it for prominence. Here the lone
Buttonis given.buttonStyle(.borderedProminent)and.font(.title2.bold()), so within theAssistiveAccessscreen the single "Continue" action reads as the clear, high-contrast call to action the mode expects.
Button with two stacked buttons to see how AssistiveAccess keeps each large target full-width and easy to reach when the mode renders more than one choice.Example & preview
Press Run live & edit to compile it in your browser — then edit the Swift on the left and the preview re-renders live.
struct AssistiveAccessDemo: View {
var body: some View {
VStack(spacing: 16) {
Image(systemName: "figure.wave.circle.fill")
.font(.system(size: 56))
.foregroundStyle(.tint)
Text("Assistive Access")
.font(.largeTitle.bold())
Text("This screen mirrors the simplified, high-contrast UI an app shows inside an AssistiveAccess scene.")
.font(.title3)
.multilineTextAlignment(.center)
.foregroundStyle(.secondary)
Button {
} label: {
Text("Continue")
.font(.title2.bold())
.frame(maxWidth: .infinity, minHeight: 64)
}
.buttonStyle(.borderedProminent)
}
.padding()
}
}