Apple 的核心信条:"最好的科技应该对所有人都有用。" 无障碍不是额外功能,是包容性设计的一部分。这张 wiki 把"对所有人友好"拆成可执行的检查项,每条尽量带 Apple 官方 Landmarks App 的实测案例。
一、无障碍的 3 个底层特性
一个无障碍界面同时满足:
- 直观 Intuitive —— 交互熟悉一致、操作简单。
- 可感知 Perceivable —— 信息不依赖单一通道,支持视觉/听觉/触觉多种感知。
- 可适配 Adaptable —— 支持系统无障碍功能,也允许用户自定义。
二、无障碍九大原则(最该贴在工位上的清单)
Apple 把无障碍归成 3 类共 9 条核心原则。这是 App Store 无障碍营养标签(Accessibility Nutrition Labels) 评估的基准:
| 类别 | 原则 | 一句话 |
|---|---|---|
| 视觉 Visual | 足够对比度 Sufficient Contrast | 前景背景对比够,文字清晰可读 |
| 深色界面 Dark Interface | 支持深色模式(有人是生理需要,不是偏好) | |
| 更大文本 Larger Text | 文字能放大 ≥200%(有人需 310%),布局不崩 | |
| 不只靠颜色区分 Differentiate Without Color Alone | 颜色 + 图标/形状/文字多重表达 | |
| 减少动效 Reduced Motion | 支持系统开关,避免缩放/滑动/视差等致晕动画 | |
| 交互 Interaction | 语音控制 Voice Control | 全程不碰屏、只用说的能完成所有操作 |
| 语音旁白 VoiceOver | 视障用户靠朗读 + 手势/键盘完整操作 | |
| 媒体 Media | 字幕 Captions | 视频/音频的对白和音效转文字、边播边显 |
| 音频描述 Audio Descriptions | 对白空隙插入语音"描述画面在发生什么" |
Landmarks App 实测教训:团队一开始就用高对比配色,但测试发现开启"增强对比度"后仍有颜色不达标 —— 最终选择替换颜色而非勉强保留,且浅色+深色两种外观都查。
三、无障碍 6 维度详解
按"用户可能面临什么障碍"组织,比按功能记更好用:
| 维度 | 服务谁 | 关键做法 |
|---|---|---|
| 视觉 Vision | 盲/色盲/低视力/光敏感 | 支持放大 200%(watchOS 140%)+ Dynamic Type;遵循 WCAG 对比度;用系统色;信息不只靠颜色;支持 VoiceOver |
| 听觉 Hearing | 听障/嘈杂环境 | 字幕/翻译字幕/音频描述/文字转录;触觉反馈补充音效(Music Haptics);视觉提示代替音频方向 |
| 动作 Mobility | 手部灵活性不足 | 控件够大够间距(带边框留 12pt 内边距、无边框留 24pt);避免复杂多指手势;滑动/拖拽要有按钮替代;支持 Voice Control / AssistiveTouch / Switch Control |
| 语言 Speech | 表达受限/偏好文字 | 完整键盘导航(Full Keyboard Access),别覆盖系统快捷键;支持 Switch Control |
| 认知 Cognition | 不同认知能力 | 操作直观一致少用自定义手势;减少限时自动消失的界面;避免自动播放(给开始/停止);支持 Reduce Motion / Dim Flashing Lights;支持 Assistive Access 简化模式 |
| visionOS | 空间计算特有 | 支持头部/手势/凝视控制;避免垂直视角切换和快速眼动;减少周边动画和摄像机晃动;界面元素别锚定头部 |
智能反转测试坑:测深色模式还要测"智能反转颜色"—— 确保图片/视频不被错误反转(否则用户看不懂)。
四、VoiceOver 怎么提速(Mac 实测技法)
VoiceOver 用户得一项项按键浏览,比鼠标慢很多。SwiftUI 给了 3 个分组动词 + 2 个补救:
| 动词 | 作用 | 何时用 |
|---|---|---|
.contain |
当作一个组,子元素分别朗读 | 给一堆相关控件(如"样式组")打包,可整组跳过 |
.combine |
把视图和子内容合并成一个朗读 | 标题+按钮合读成"标题,应用按钮",一次听完 |
.ignore |
跳过内部、只读最外层 | 装饰性嵌套 |
accessibilityRotor |
加自定义"转子"快捷菜单 | 只浏览加书签的页面(跳过普通页) |
accessibilityAction |
加非指针操作项 | 把"仅悬停可见"的功能(VoiceOver 无法悬停)变成动作菜单可达 |
坑:Mac 界面层级深,辅助容器爱嵌套多层 —— 别套太多组(反复进进出出很费劲)。原则:结构清晰 + 滑动能识别所有元素 + 正确朗读顺序和命名。
五、App Store 无障碍营养标签(怎么如实声明)
三大理念 + 评估流程:
- 三理念:为所有人设计 / 学习无障碍功能(VoiceOver、Voice Control、Dynamic Type、Smart Invert)/ 连接残障群体("Nothing about us without us",让真实残障用户参与设计测试)。
- 评估流程:① 定义"通用任务"(首启/登录/购买/设置 —— 用户来你 App 要完成什么);② 每项无障碍特性 × 每个通用任务都测、所有设备都测;③ "如果某功能和 App 无关,就不要声称支持"。
六、包容性设计 Inclusion
核心心法:不断审视自己对他人的假设,愿意随认知增长调整设计。
- 多样性因素:年龄/性别认同/种族/性取向/身心属性/永久或临时或情境性残障/语言文化/宗教/教育/政治观/社经背景。
- 包容性语言:简明易懂、避免技术术语(必须用就给定义)、替换有文化特定性的俚语。
- 性别:用中性词("订阅者"而非"他/她");需要性别信息时给多元选项("非二元/自我认定/不回答")+ 自定义代词。
- 避免刻板印象:展示多样人群;别只画男医生/女护士;别假设"家庭=男女+亲生子女";问题用普遍体验("你最喜欢的活动")而非"大学最爱的学科/第一辆车"。
- 以人为本叙述:先讲人的成就目标,再提可能的残障;残障是广谱(视障含低视力/全盲/色盲/光敏感…),且每个人都可能经历(短期/情境性残障)。
- 国际化 vs 本地化:国际化=让软件能处理多语言区域;本地化=为特定地区提供翻译资源。SF Symbols 自带语言特定符号 + LTR/RTL 支持,简化本地化。
七、隐私 Privacy
核心心法:只要必要的数据 + 透明说明用途 + 优先本地处理。
| 要点 | 做法 · 反例 |
|---|---|
| 按需请求 | 用户明确使用某功能时才请求权限(点位置按钮才要定位),别在启动就要(除非该数据对 App 至关重要,如导航 App 要定位) |
| 用途说明要具体 | ✅"夜间录音以检测打鼾声" ❌"麦克风用于提供更好体验"(太模糊)❌"打开麦克风权限"(没给原因) |
| 预警界面规矩 | 系统提示前可加自定义解释界面,但只能有一个按钮(用"继续/下一步",别用"允许")、不能加取消等其他操作(否则用户感觉被操控) |
| 跟踪请求 | 启动即跟踪必须先弹系统提示再收集;禁止用奖励换权限;别用模仿系统提示的假界面 |
| 位置按钮 | iOS/iPadOS/watchOS 的 Core Location 位置按钮 = 一次性临时授权,外观可定制但始终传达"共享位置"意图 |
| 数据保护 | 别只用密码(用生物识别/Passkeys);敏感数据存 keychain;别自己发明认证方案(用 Sign in with Apple / Password AutoFill);macOS 用有效开发者 ID + App Sandbox |
八、文案编写 Writing
核心心法:确定语气 + 行动导向 + 建立一致的语言模式。
- 定语气:想象在和谁说话(银行 App 传达信任稳定,游戏 App 轻松有趣);制定常用词列表保持一致。
- 按情境调语气:摔倒提示要严肃直接,健身记录可轻松庆祝。
- 行动导向:用主动语态 + 动词标签("下一步" > "来吧!");链接文本描述明确行动,别用"点击这里"(对无障碍不友好)。
- 错误消息给方案:✅"请选择至少 8 个字符的密码" ❌"密码太短";避免"哦不!"这类显得不真诚的语气。
- 空状态引导:列表为空时给明确的下一步建议或功能介绍。
- 设置标签:简洁 + 描述"开启后的效果"(让用户推断关闭效果),别靠复杂路径说明。
- 输入字段:用占位符示范格式("name@example.com");出错时在字段旁给具体修正建议,而非笼统"无效输入"。
- 多设备:iPhone/watch 屏小要简洁;tvOS 多人观看要简短又照顾多人理解。
九、从右到左 RTL(阿拉伯语/希伯来语等)
系统 UI 框架默认支持 RTL 自动翻转,但有几处要手动把关:
| 元素 | RTL 规则 |
|---|---|
| 文本对齐 | LTR 左对齐、RTL 右对齐;段落按其语言而非上下文对齐(RTL 环境里的英文段仍左对齐);列表项保持一致对齐 |
| 数字 | 不翻转数字顺序(电话号/卡号"541"永远是"541");但进度条/滑块/评分的方向要翻转 |
| 控件 | 显示进度/值的控件方向翻转(从右向左);按钮排列顺序翻转保逻辑一致 |
| 图像 | 有顺序/层级关系的图要翻转显示顺序 |
| 界面图标 | SF Symbols 自带 RTL 变体和阿/希伯来语本地化符号;翻转"表示文本方向"和"前进/后退运动"的图标(如扬声器声波方向);含文字的图标做本地化版本 |
源自 Foundations 基础(Accessibility/Inclusion/Privacy/RTL/Writing)+ iOS macOS 系统与体系(无障碍九大原则·视觉/媒体/交互类·Mac VoiceOver·营养标签)共 11 篇。视觉基础另见 Apple HIG 视觉基础 Foundations(颜色/字体/布局/材质/动效/暗黑/图标/SF Symbols/品牌)。