苹果在 iPhone 人机介面规约里推荐开发者不要用开场屏(splash screen),而应该做一张跟程序主画面近似的图来作为启动画面,从而让用户心理上产生「程序已经加载完毕」的错觉。Instapaper 的作者马可·阿蒙在设计启动画面时想遵守这一原则,但遇到了很多极细微的用户体验问题。也正是对无数诸如此类的微小细节的衡量与权重成就了看似简单的 Instapaper。原文在此。—— 编者
iOS 软件启动时会显示一张事先画好的静态图片 Default.png。这张图片是可以由开发者任意指定的。Instapaper 用的是这张:
这符合 iOS 的规定,即 Default.png 应该是一个空白版的程序主介面。这会让软件看上去像是已经加载完毕的样子(即便事实上还没有),一两秒钟后,数据再「跳出来」。这个小技巧始自一代 iPhone,它让程序的启动速度和反应显得快了不少。上图所示的介面只是一层伪装,它只是一个静态图片,和程序加载完毕后的实际介面样子未必相关。
苹果自己的 iOS 软件在运用这个技巧时有一个优势:它们可以在运行时(runtime)里动态地改变这张启动图片。在程序退出前,它们可以画一张介面当时的样子存起来,这样在下次进入程序并恢复上次的状态时就可以做到看上去天衣无缝。
但第三方软件无法动态地改变启动图片。这就造成了一个视觉连续性的问题:我们每次都只能显示同一张启动图片,无论程序加载时恢复的状态跟这张图片是否一样。
对于 Instapaper 而言,这主要涉及两种状态:
- 全文阅读状态。这一状态的介面和初始的文章列表介面截然不同。
- 暗背景状态。
暗背景状态的问题要大得多。在黑暗的背景出现之前让明亮的白色启动画面一闪而过,会令用户感到不快甚至不适。我曾经花了无数时间避免在暗背景模式下出现白屏或一闪而过的白屏,但就是这一点我毫无办法,令人非常懊恼。
有一个办法是做一张暗色的启动画面。但我不能单纯地拿暗背景模式的介面来用,因为那样一来,用白背景模式的人(数量上要多得多)的体验就会很奇怪:先看到黑暗的启动画面,然后出现明亮的白背景。
不少开发者用开场屏来解决这一问题。做 Instapaper 2.3 的时候我考虑过,但最终还是没能鼓起勇气。以下是我构想中的草图:
这么做也有它的问题:
会令用户困惑,因为苹果自己的软件都不用开场屏。
开场屏在大部分新的、高配置的 iPhone 和 iPad 上都不会停留太久,用户还没来得及看清上面的内容画面就闪过去了,这样他们会觉得好像错过了什么东西。
不知是不是我自己的问题,我总觉得启动屏显得很廉价,而且过时。
所以,上述两种启动画面都有重大缺失。情况跟你把所有的设置选项都放到「设置」这个软件里有点像。不过我觉得那个问题已经基本解决了(大部分软件都没有把设置选项塞到「设置」里)。
而启动画面的两种方案都不够好。目前我还是采用了苹果自家软件的做法【注释一】,但直到想出更好的方案之前,我还是会为此纠结。
【注释一】非游戏类的 iPhone 软件的第一准则:不知道该怎么做的时候就跟着苹果做。