TechnologiesSwiftUI

AssistiveAccess struct

iOSmacOStvOSwatchOSvisionOSiOS 26.0+✓ renders

A scene that presents an interface appropriate for Assistive Access on iOS

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.

  1. Declare an AssistiveAccess scene in your app body

    Add an AssistiveAccess scene alongside your regular scenes in the App's body. The system activates it only while Assistive Access is engaged, so the view hierarchy you pass into it — here the centered VStack of an icon, title, description, and a single action — is what people see in that mode.

  2. Supply the simplified content as a trailing closure

    AssistiveAccess takes a view-builder closure describing the screen to display. Keep it intentionally sparse: a clear focal Image(systemName:), a prominent Text("Assistive Access") heading, and at most a small number of choices. The closure's root view becomes the content the mode renders.

  3. 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 a Button whose label uses .frame(maxWidth: .infinity, minHeight: 64) so the tap target spans the width and stands tall.

  4. Make primary actions unmistakable

    Limit the scene to one obvious next step and style it for prominence. Here the lone Button is given .buttonStyle(.borderedProminent) and .font(.title2.bold()), so within the AssistiveAccess screen the single "Continue" action reads as the clear, high-contrast call to action the mode expects.

Try it — Replace the single "Continue" 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.

AssistiveAccess.swift
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()
    }
}
Live preview
Assistive Access This screen mirrors the simplified, high-contrast UI an app shows inside an AssistiveAccess scene. Continue
Assistive Access This screen mirrors the simplified, high-contrast UI an app shows inside an AssistiveAccess scene. Continue
swift → lexer → parser → sema → uiir → canvas Open in Studio ↗
What's new in SwiftUI 27 →