包容性设计的实践
The practice of inclusive design
2021年6月8日
一句话判断
这不是一堂形而上的「政治正确」课,而是用真实案例告诉你:不做包容性设计 = 放弃用户 = 放弃收入。
这场 Session 讲了什么
这个 Session 从「为什么要做包容性设计」开始,但没有停留在口号层面,而是直接展示了具体的设计决策如何影响不同用户群体。苹果的设计团队分享了他们在开发 Apple 自家 App 时的思考过程:如何让色盲用户也能区分图表中的数据系列,如何在嘈杂环境中让听力障碍用户不依赖音频就能获取关键信息,如何让运动障碍用户不依赖精确触控也能完成操作。
Session 提出了一个核心框架:「设计的三层包容」。第一层是基础可达——所有用户都能使用核心功能;第二层是个性化——用户可以选择适合自己的交互方式;第三层是情感认同——让每个用户觉得这个产品是「为我做的」。苹果举了几个具体例子:Fitness+ 提供的「字幕 + 音频描述 + 手语」三重保障,Apple Watch 的「辅助触控」让单手操作成为可能,以及 App Store 的编辑推荐开始标注「辅助功能标签」让用户提前知道 App 是否适配了自己的需求。
值得深挖的点
「不是为残障用户设计,而是为所有用户设计」。 Session 反复强调一个观点:辅助功能不是「额外功能」,而是好的通用设计的副产品。比如你在阳光下看不清手机屏幕时,你就是一个「临时视觉障碍用户」;你抱着孩子单手操作手机时,你就是一个「临时运动障碍用户」。高对比度模式、语音控制、大按钮——这些「辅助功能」在特定场景下对所有人都有效。把辅助功能当作核心需求来设计,而不是事后补救,成本更低、效果更好。
辅助功能标签的商业价值。 App Store 在 iOS 15 中引入了辅助功能标签系统,开发者可以标注自己的 App 支持哪些辅助功能(VoiceOver、动态字体、Switch Control 等)。这些标签会直接展示在 App Store 产品页上,帮助有辅助功能需求的用户在下载前做出判断。对于开发者来说,这是一个新的差异化竞争点——标注了辅助功能标签的 App 在搜索结果中会吸引更多用户。
代码片段
// 为图表添加辅助功能标签,让 VoiceOver 用户也能理解数据
struct ChartView: View {
let dataPoints: [DataPoint]
var body: some View {
HStack {
ForEach(dataPoints) { point in
RoundedRectangle(cornerRadius: 4)
.fill(point.color)
.frame(height: point.value)
// 为色盲用户:不要只依赖颜色区分
// 为 VoiceOver 用户:提供文字描述
.accessibilityLabel("\(point.label): \(point.value)")
.accessibilityValue("占比 \(point.percentage)%")
}
}
.accessibilityElement(children: .contain)
.accessibilityLabel("数据图表")
}
}
// 支持动态字体——不要硬编码字号
struct ArticleView: View {
let content: String
var body: some View {
ScrollView {
Text(content)
.font(.body) // 使用语义化字体,系统会自动适配动态字体设置
.padding()
}
}
}
// 检测辅助功能状态,据此调整 UI
if UIAccessibility.isVoiceOverRunning {
// VoiceOver 开启时,简化动画,提供更多文字描述
simplifiedView
} else {
animatedView
}
最佳实践
- 在设计阶段就考虑辅助功能,而不是开发完再补。在设计稿上标注每个元素在 VoiceOver 下应该读什么,比在代码里回过头想要高效得多
- 用「不只是颜色」原则传达信息——图表用形状 + 颜色,按钮用图标 + 文字,状态用位置 + 颜色
- 在 App Store Connect 中填写辅助功能标签,这对用户发现你的 App 有直接帮助
- 每个版本发布前用 Accessibility Inspector 做一轮检查,它会自动发现缺失的标签和对比度不足的问题
还有什么值得关注
- Apple 的辅助功能文档(Human Interface Guidelines - Accessibility)是业界最完善的设计参考之一
- Xcode 的 Accessibility Inspector 工具可以模拟不同辅助功能场景,不需要真实设备
- iOS 15 新增了「per-app 语言设置」,用户可以为每个 App 单独设置语言,这对多语言社区的用户非常实用