Upgrade to Pro — share decks privately, control downloads, hide ads and more …

iosdevuk-my-award-winning-scheme-for-accessibility

Avatar for akidon0000 akidon0000
September 09, 2026

 iosdevuk-my-award-winning-scheme-for-accessibility

Avatar for akidon0000

akidon0000

September 09, 2026

More Decks by akidon0000

Other Decks in Programming

Transcript

  1. import SwiftUI extension View { func a11yLineLimit(_ standard: Int, extra:

    Int = 2) -> some View { modifier(A11yLineLimitModifier(standard: standard, extra: extra)) } } private struct A11yLineLimitModifier: ViewModifier { @Environment(\.dynamicTypeSize) private var dynamicTypeSize let standard: Int let extra: Int } func body(content: Content) -> some View { content.lineLimit( dynamicTypeSize.isAccessibilitySize ? standard + extra : standard ) }
  2. import SwiftUI extension View { func a11yLineLimit(_ standard: Int, extra:

    Int = 2) -> some View { modifier(A11yLineLimitModifier(standard: standard, extra: extra)) } } private struct A11yLineLimitModifier: ViewModifier { @Environment(\.dynamicTypeSize) private var dynamicTypeSize let standard: Int let extra: Int } func body(content: Content) -> some View { content.lineLimit( dynamicTypeSize.isAccessibilitySize ? standard + extra : standard ) }
  3. import SwiftUI extension View { func a11yLineLimit(_ standard: Int, extra:

    Int = 2) -> some View { modifier(A11yLineLimitModifier(standard: standard, extra: extra)) } } private struct A11yLineLimitModifier: ViewModifier { @Environment(\.dynamicTypeSize) private var dynamicTypeSize let standard: Int let extra: Int } func body(content: Content) -> some View { content.lineLimit( dynamicTypeSize.isAccessibilitySize ? standard + extra : standard ) }
  4. import SwiftUI struct SessionDetailView: View { var body: some View

    { HStack { Label(session.timeRange, systemImage: "clock") Spacer() NavigationLink(value: LocationNavigationID(value: talk.locationID)) { locationLinkLabel } } /* .. */ } }
  5. import SwiftUI struct SessionDetailView: View { var body: some View

    { ViewThatFits(in: .horizontal) { HStack { Label(session.timeRange, systemImage: "clock") Spacer() NavigationLink(value: LocationNavigationID(value: talk.locationID)) { locationLinkLabel } } VStack(alignment: .leading) { Label(session.timeRange, systemImage: "clock") NavigationLink(value: LocationNavigationID(value: talk.locationID)) { locationLinkLabel } } } /* .. */ } }
  6. import SwiftUI struct ProgrammeCountdownBanner: View { var body: some View

    { bannerContent .accessibilityShowsLargeContentViewer { Label { VStack(alignment: .leading, spacing: 2) { Text(primaryTitleText) Text(primarySubtitleText) } } icon: { Image(systemName: iconName) } } /* .. */ } }
  7. import SwiftUI struct ProgrammeCountdownBanner: View { var body: some View

    { bannerContent .accessibilityShowsLargeContentViewer { Label { VStack(alignment: .leading, spacing: 2) { Text(primaryTitleText) Text(primarySubtitleText) } } icon: { Image(systemName: iconName) } } /* .. */ } }
  8. Colour blindness Protanopia Deuteranopia Tritanopia red color blindness green color

    blindness blue color blindness https://speakerdeck.com/akidon0000/nazedehuorutogaqing-se-tint-colornoli-you-nipo-ru?slide=19
  9. Colour blindness Protanopia Deuteranopia Tritanopia red color blindness green color

    blindness blue color blindness https://speakerdeck.com/akidon0000/nazedehuorutogaqing-se-tint-colornoli-you-nipo-ru?slide=19
  10. Colour blindness Deuteranopia Protanopia Tritanopia green color blindness red color

    blindness blue color blindness approx. 5.7 % approx. 1.9 % approx. 0.4 % https://www.colourblindawareness.org/colour-blindness/types-of-colour-blindness/ fi https://www.ucl.ac.uk/mathematical-physical-sciences/sites/mathematical̲physical̲sciences/ les/guidelines̲for̲colour̲blindness.pdf
  11. Di erentiate Without Color Dynamic Type VoiceOver Rotate Color Contrast

    Reduce Transparency Reduce Motion Switch Control Voice Control Full Keyboard Access 44pt Tap Targets Gesture Alternatives Haptic Feedback ff etc…
  12. Di erentiate Without Color Dynamic Type VoiceOver Rotate Color Contrast

    Reduce Transparency Reduce Motion Switch Control Voice Control Full Keyboard Access 44pt Tap Targets Gesture Alternatives Haptic Feedback ff etc…
  13. 2:20 PM - 3:00 PM 3:40 PM - 4:20 PM

    Hugh Owen C22 Great Hall, Arts Centre