0Pricing
SwiftUI Academy · Lesson

VoiceOver & Accessibility Labels

Describe controls for assistive tech.

VoiceOver & Accessibility Labels is a free SwiftUI Academy lesson on CoddyKit — lesson 1 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the SwiftUI Academy learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.

What Is VoiceOver?

VoiceOver is Apple's screen reader. It speaks your interface aloud so people who can't see the screen can still use your app. 🔊

SwiftUI Helps You

The good news: SwiftUI auto-generates accessibility for standard views. A Text already reads its content, so you start ahead.

When Labels Go Missing

An icon-only button has no readable text, so VoiceOver may say nothing useful. That's when you add an explicit accessibility label.

Button(action: save) {
    Image(systemName: "square.and.arrow.down")
}

Adding a Label

Attach accessibilityLabel to describe what a control does in plain words, not how it looks.

Button(action: save) {
    Image(systemName: "square.and.arrow.down")
}
.accessibilityLabel("Save")

Label, Not Appearance

Write the label as the user's goal. Say Save, not "down arrow icon". The label is meaning, never decoration.

Adding Hints

An accessibilityHint tells the user what happens after they act. It is read after the label, with a short pause.

.accessibilityLabel("Save")
.accessibilityHint("Saves your note to the list")

Reading the Value

For controls that hold data, accessibilityValue announces the current state, like a slider reading "70 percent".

Slider(value: $level)
    .accessibilityValue("\(Int(level)) percent")

Grouping Elements

Use accessibilityElement(children:) to merge a card's pieces into one swipe, so VoiceOver reads it as a single unit.

VStack { Text(name); Text(role) }
.accessibilityElement(children: .combine)

Marking Roles with Traits

Add accessibilityAddTraits so VoiceOver announces a view's role, like calling a tappable card a button.

.accessibilityAddTraits(.isButton)

Hiding Decoration

Purely decorative images add noise. Use accessibilityHidden(true) to skip them so VoiceOver focuses on what matters.

Image("sparkle")
    .accessibilityHidden(true)

Test It Yourself

Turn on VoiceOver in the Accessibility settings and swipe through your app. Hearing it is the fastest way to spot gaps.

Quick Check

You have an icon-only button. Which modifier gives VoiceOver a readable name?

Recap

You learned to make controls speak: add an accessibilityLabel for icons, hints for outcomes, and group or hide views so VoiceOver flows clearly. ✨

Frequently asked questions

Is the “VoiceOver & Accessibility Labels” lesson free?

Yes — the full text of “VoiceOver & Accessibility Labels” is free to read here on the web, and the SwiftUI Academy course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the SwiftUI Academy course, upgrade to CoddyKit PRO.

What will I learn in “VoiceOver & Accessibility Labels”?

Describe controls for assistive tech. You practise SwiftUI Academy with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.

Do I need any experience to start SwiftUI Academy?

No prior experience is required. SwiftUI Academy on CoddyKit is structured for beginners through advanced learners; this is — lesson 1 of 4, so you can start here or from the beginning and move at your own pace.

How long does the “VoiceOver & Accessibility Labels” lesson take?

Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.

Can I write and run code in this SwiftUI Academy lesson?

Yes. Every SwiftUI Academy lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.

All lessons in this course

  1. VoiceOver & Accessibility Labels
  2. Dynamic Type & Scaled Fonts
  3. Localizing Strings & String Catalogs
  4. Adapting to Light & Dark Mode
← Back to SwiftUI Academy