AgentSkillsCN

swiftui-accessibility

SwiftUI 应用的无障碍功能实现指南。当您需要实现 VoiceOver 支持、添加 accessibilityLabel/Hint/Value 属性、支持动态字体调整、确保色彩对比度、进行无障碍测试,或在代码审查中评估应用的无障碍适配情况时,可使用本指南。本指南覆盖了 iOS 无障碍 API、WCAG 指南以及各类测试工具。

SKILL.md
--- frontmatter
name: swiftui-accessibility
description: Accessibility implementation guide for SwiftUI apps. Use when implementing VoiceOver support, adding accessibilityLabel/Hint/Value, supporting Dynamic Type, ensuring color contrast, testing accessibility, or reviewing accessibility in PRs. Covers iOS accessibility APIs, WCAG guidelines, and testing tools.

SwiftUI Accessibility Guide

SwiftUIアプリのアクセシビリティ実装ガイド。

ディレクトリ構成

code
swiftui-accessibility/
├── SKILL.md (このファイル)
└── references/
    └── accessibility.md

リファレンスファイル

references/accessibility.md

アクセシビリティ実装ガイド:

  • VoiceOver対応:
    • accessibilityLabel: 要素の説明
    • accessibilityHint: 操作のヒント
    • accessibilityValue: 現在の値
    • accessibilityTraits: 要素の種類
  • Dynamic Type:
    • フォントスケーリング
    • レイアウト対応
  • 色のコントラスト:
    • WCAG基準
    • ダークモード対応
  • モーション:
    • reduceMotion対応
    • アニメーション代替
  • テストとツール:
    • Accessibility Inspector
    • VoiceOverテスト方法

使用方法

アクセシビリティ実装時

  1. references/accessibility.mdで実装パターンを確認
  2. VoiceOverでテスト
  3. Dynamic Typeでレイアウト確認

PRレビュー時

  1. アクセシビリティラベルの有無を確認
  2. 画像にaltテキストがあるか確認
  3. タップ領域が十分か確認

クイック実装ガイド

VoiceOver基本

swift
// ラベル(必須)
Image(systemName: "heart.fill")
    .accessibilityLabel("お気に入り")

// ヒント(操作説明)
Button("削除") { }
    .accessibilityHint("この項目を削除します")

// 値(現在の状態)
Slider(value: $volume)
    .accessibilityValue("\(Int(volume))パーセント")

Dynamic Type対応

swift
// 推奨: システムフォント
Text("Hello")
    .font(.body)

// カスタムフォントのスケーリング
Text("Hello")
    .font(.custom("MyFont", size: 16, relativeTo: .body))

reduceMotion対応

swift
@Environment(\.accessibilityReduceMotion) var reduceMotion

var body: some View {
    content
        .animation(reduceMotion ? nil : .default, value: isExpanded)
}

チェックリスト

  • 全てのインタラクティブ要素にaccessibilityLabelがあるか
  • 画像に適切な説明があるか
  • Dynamic Typeでレイアウトが崩れないか
  • 色だけに依存した情報伝達がないか
  • タップ領域は44pt以上あるか

関連スキル

  • swiftui-coding-guidelines: 基本的なベストプラクティス
  • swiftui-code-review-checklist: PRレビュー時のアクセシビリティチェック