一致性靠沿用系统控件获得而非模仿其外观
别名: 沿用系统控件 · fake native · 外观模仿
概念解释
苹果平台上的一致性,不是把开关画得像系统开关,而是把系统开关用起来。用户在别的应用里学会的是控件的行为:滑动、长按、旁白怎么读、焦点怎么走。沿用真实控件,等于把那份已经付过的学习费接进来。只模仿外观的自绘件叫假原生(fake native):看起来熟,摸起来是另一套状态机。这个原则叫靠沿用获得一致性(consistency by adoption)。
它不讨论导航层级该几层,也不讨论品牌色能不能进内容区。它只问:这个可操作对象,是系统对象,还是一张长得像系统对象的图。
机制
系统控件是一份会随操作系统升级的行为契约:暗色模式、从右到左、辅助功能、指针形状、焦点环,都会跟着系统走。自绘外观把像素冻在设计稿的那一版,行为契约却不随包分发。用户按系统预期去滑,控件却只响应点击;旁白读到「按钮」而不是「开关」;系统粗体字号来了,自绘开关的拇指还是固定像素。
一致性来自共享那份契约,不是共享那张贴图。模仿外观之所以诱人,是因为它在静帧评审里得分:并排截图几乎看不出差别。差别出现在第一次非点击的操作、第一次系统设置变化、第一次用辅助功能走流程。静帧制造了一致的错觉,运行时把错觉拆掉。
边界
没有对应系统控件的独特功能(画布上的贝塞尔手柄、乐器键盘)应当自绘,硬套开关或滑块会更糟。游戏、沉浸式全屏如果完全离开系统外壳,沿用原则管的是系统提供的那一层(分享、权限对话框),不是画布内部。Web 在 iOS 上能用的系统控件有限,这时「沿用」退化为使用平台惯例的交互语义,而不是 UIKit 控件实例。为了品牌而换掉的控件,若仍调用系统对象、只改颜色,仍算沿用;若连状态机一起重写,就已经离开沿用,进入另一套产品语言。
怎么落地
- 开关、滑块、分段控件、导航栏按钮、分享与系统弹层,默认用系统对象;设计稿里画出它们是为了标注内容,不是为了让工程按像素重绘。
- 自绘之前先列一份「系统已经提供的行为」清单(辅助功能角色、动态外观、方向锁定),确认自绘件要全部自己实现,而不是只交外观。
- 品牌差异放在内容层(插图、空状态、色点),不要放在框架控件的外形上。
- 验证:打开系统粗体文本、深色模式和旁白,走一遍每个「看起来像系统」的控件。外观还在、行为掉队的每一处,都是模仿而非沿用。再对照:同一操作在「设置」里怎么完成,应用里是否同一套手势与反馈。