作为UI设计师,最重要的就是接触iOS的设计规范。苹果拥有引领世界的设计能力,iOS影响着一代又一代的设计师,所以这篇文章主要是来翻译和解析一下iOS的设计规范。这个规范算是所有移动设计师必看的内容了。

本文为翻译内容,来自苹果官方人机界面准则
推荐访问英文原文地址:人机界面准则
翻译: 张洪Heo(转载注明出处)
非原创内容须知

该文章为系列内容:查看系列全部文章

应用架构

启动

发布体验对人们对你的应用程序的感觉有很大影响。不管人们使用的是什么设备,也不管他们上次打开你的应用有多长时间,启动体验都应该是快速和无缝的。

下面的指导原则可以帮助你设计一个令人愉快的启动体验。有关开发人员指南,请参见响应应用程序的启动

提供启动屏幕。当你的应用程序启动时,系统就会显示你的启动屏幕,并迅速将其替换为你的应用程序的第一个屏幕。启动屏幕的功能是给人一种你的应用程序速度快、反应灵敏的印象,同时允许加载初始内容。为了确保从你的启动屏幕无缝过渡,设计一个与你的第一个应用程序屏幕相似的普通屏幕,并且不会引起人们的注意。有关指导,请参见启动屏幕

以适当的方向启动。如果你的应用程序同时支持纵向和横向模式,它应该使用设备的当前方向启动。如果你的应用程序只在一个方向上运行,它应该总是在那个方向上启动,并在必要时让人们旋转设备。除非有令人信服的理由不这样做,否则无论设备是向左还是向右旋转,处于横向模式的应用程序都应该正确定位。有关指导,请参见适应性和布局

避免预先询问设置信息。人们期望应用程序能正常工作。为大多数用户设计你的应用程序,让少数想要不同配置的人调整设置以满足他们的需求。尽可能多地从设备设置和默认设置中获取设置信息,或者通过iCloud等同步服务获取设置信息。如果你必须要求提供设置信息,请在用户第一次打开应用程序时提示他们提供设置信息,并让他们稍后在应用程序的设置中对其进行修改。

避免显示应用内许可协议和免责声明。让应用商店显示协议和免责声明,以便人们可以在下载你的应用之前阅读它们。如果你必须在应用程序中包含这些项目,请在不影响用户体验的情况下以平衡的方式集成它们。

当你的应用程序重新启动时,恢复到以前的状态。不要让人们在你的应用程序中返回到他们之前的位置。保留并恢复你的应用程序的状态,以便它们可以从中断的位置继续。

不要鼓励重新启动。重新启动需要时间,而且会让你的应用程序看起来不可靠,很难使用。如果你的应用程序有内存或其他问题,除非系统刚刚启动,否则很难运行,你需要解决这些问题。

避免让人们太快或太频繁地给你的应用打分。在第一次发布后不久-或者在人们使用你的应用程序时太频繁-询问评级是令人恼火的,可能会减少你收到的有用反馈的数量。为了鼓励经过深思熟虑的反馈,在要求评级之前,给人们时间形成对你的应用的看法。始终提供一种方式来选择退出评级提示,并且永远不会强迫人们对你的应用程序进行评级。

开屏

开屏可以让你欢迎新用户,并与返回的用户重新建立联系。快速、有趣和有教育意义的可选开屏体验可以帮助人们在不妨碍他们的情况下最大限度地利用你的应用程序。

开屏页面

提供帮助人们享受你的应用程序的开屏服务,而不仅仅是设置它。人们可以感谢有机会更多地了解你的应用程序,但他们也希望它能正常工作。避免在你的开屏体验中包含设置或许可细节。有关指导,请参见启动

快点开始行动吧。当系统用你最初的应用程序屏幕替换你的启动屏幕后,让人们直接投入并开始享受你的应用程序。如果你需要提供教程或介绍序列,给人们一种跳过它们的方法,而不是自动向返回的用户展示它们。

预见到需要帮助的情况。主动寻找人们可能陷入困境的时刻。例如,一款游戏可以在暂停或角色不前进时随意显示有用的提示。让人们回放教程,以防他们第一次错过了什么。

坚持教程中的要点。为初学者提供指导固然不错,但教育并不能取代优秀的应用程序设计。首先,也是最重要的,让你的应用变得直观。如果需要太多指导,请重新审视应用程序的设计。

让学习变得有趣和容易被发现。边做边学比阅读说明书有趣得多,也有效得多。运用动画和互动的方式,循序渐进地在情境中进行教学。避免显示看起来交互的静态屏幕截图。

加载

在加载内容时,空白或静态屏幕可能会让你的应用程序看起来像是被冻结了,导致困惑和沮丧,并有可能导致人们离开你的应用程序。

明确何时加载。至少,要显示一个能传达正在发生的事情的活动微调工具。更好的是,显示明确的进度,这样人们就可以判断他们将等待多长时间。

尽快显示内容。不要让人们在看到他们期待的屏幕之前等待内容加载。立即显示屏幕,并使用占位符文本、图形或动画来标识内容尚不可用的位置。在内容加载时替换这些占位符元素。只要有可能,就在后台预先加载即将到来的内容,例如在播放动画或用户浏览关卡或菜单时。

教育或娱乐人们掩盖加载时间。考虑显示有关游戏性、娱乐性视频序列或有趣的占位符图形的提示。

自定义加载屏幕。虽然标准的进度指标通常还可以,但有时会让人感觉断章取义。考虑通过与你的应用或游戏风格相匹配的自定义动画和元素来设计更加身临其境的体验。

有关其他指导,请参阅进度指标

模态

通道是一种设计技术,它以一种与用户先前的当前上下文分离的临时模式呈现内容,并且需要显式操作才能退出。以模态方式呈现内容可以:

帮助人们专注于一项独立的任务或一组密切相关的选项。
确保人们收到重要信息,并在必要时采取行动

提醒和模态

IOS提供警报、活动视图(或共享表)和动作表,供你在应用程序中的特定情况下使用。为了在你的应用程序中显示自定义模式内容,iOS 13及更高版本支持以下显示样式。

表格

工作表演示样式显示为一张卡片,该卡片部分覆盖了底层内容,并使所有未覆盖的区域变暗以防止与它们交互。父视图或上一张卡片的顶部边缘在当前卡片后面可见,以帮助人们记住打开卡片时挂起的任务。人们通过以下方式驳回卡片:

  • 从屏幕顶部向下滑动。
  • 当卡片内容滚动到顶部时,从屏幕上的任何位置向下滑动。
  • 轻敲按钮。

对不支持复杂任务的非沉浸式模式内容使用工作表。

全屏幕

全屏演示风格覆盖了整个屏幕。前面的视图完全覆盖,最大限度地减少了视觉干扰。人们只需轻按一个按钮,即可关闭全屏模式视图。

使用全屏模式视图显示身临其境的内容(如视频、照片或相机视图),或使用从全屏演示中获益的复杂任务(如标记文档或编辑照片)。


如果使用当前上下文模式视图样式在拆分视图窗格、弹出窗口或其他非全屏视图中显示模式内容,则在紧凑环境中显示模式内容时应切换到使用工作表。

在有意义的时候使用模态。只有当人们的注意力集中在做出选择或执行与当前任务不同的任务上时,才能创造一种模式体验。模态体验让人们脱离了当前的环境,需要采取行动来消除它,所以只有当它提供了明确的好处时,才有必要使用它。

预留警报,以便提供基本信息–理想情况下也是可行的–信息。通常,出现警报是因为出现了问题。因为警报会中断体验,并且需要轻触才能解除,所以让人们感觉到入侵是有道理的,这一点很重要。有关指导,请参阅警报。

保持模式任务简单、简短、专注。避免在你的应用程序中创建应用程序。如果一项模态任务过于复杂,当人们进入模态语境时,他们可能看不到他们暂停的任务。在创建涉及视图层次结构的模式任务时要特别小心,因为人们可能会迷路并忘记如何返回他们的步骤。如果模式任务必须包含子视图,请提供通过层次结构的单一路径和完成的明确路径。除了完成任务之外,不要使用完成按钮。

始终包含一个关闭模式视图的按钮。例如,你可以使用Done或Cancel。包括一个按钮可以确保辅助技术可以访问模式视图,并提供解雇手势的替代方案。

必要时,通过在关闭模式视图之前获得确认来帮助人们避免数据丢失。不管人们是使用解散手势还是使用按钮来关闭视图,如果该操作可能导致用户生成的内容丢失,请提交一份说明情况并为人们提供解决方法的行动单。

不要显示出现在弹出窗口顶部的卡片。虽然你可以在弹出窗口中显示卡片,但弹出窗口顶部不应显示任何内容(可能的警告除外)。在极少数情况下,当人们在弹出窗口中执行操作后需要出示卡片时,请在显示卡片之前关闭弹出窗口。

通常,显示标识模式任务的标题。当人们进入一项模式任务时,他们会从之前的上下文中切换出来,所以让新的上下文变得清晰是个好主意。你还可以在视图的其他部分提供文本,以便更完整地描述任务或提供指导。

使模式视图外观与你的应用程序协调。例如,当模式视图包含导航栏时,它应该与应用程序中的导航栏使用相同的外观。

选择在你的应用程序中有意义的模式转换样式。使用与你的应用程序相协调的过渡样式,并增强对临时上下文转移的感知。默认过渡会将模式视图从屏幕底部垂直向上滑动,然后在关闭时向下滑动。在整个应用程序中使用一致的模式转换样式。

有关开发人员指南,请参阅UIViewControllerUIPresentationController

导航

人们往往不知道应用程序的导航功能,直到它没有达到他们的期望。你的工作是以一种支持你的应用程序的结构和目的的方式实现导航,而不会引起人们对它本身的注意。导航应该感觉自然和熟悉,不应该主宰界面或将焦点从内容上移开。在iOS中,有三种主要的导航方式。

分层导航

在到达目的地之前,在每个屏幕上选择一个选项。要去到另一个目的地,你必须回溯你的脚步,或者从头开始,做出不同的选择。设置和邮件使用此导航样式。

平面导航

在多个内容类别之间切换。音乐和应用商店使用这种导航风格。

内容驱动型或体验驱动型导航

在内容之间自由移动,或者内容本身定义导航。游戏、书籍和其他沉浸式应用程序通常使用这种导航风格。

一些应用程序结合了多种导航样式。例如,使用平面导航的应用程序可以在每个类别中实现分层导航。

始终提供一条清晰的路径。人们应该始终知道他们在你的应用程序中的什么位置,以及如何到达他们的下一个目的地。不管导航风格如何,重要的是内容的路径是逻辑的、可预测的和易于遵循的。一般情况下,给人们一条通往每个屏幕的路径。如果他们需要在多个上下文中查看屏幕,请考虑使用动作单、警报、弹出窗口或模式视图。要了解更多信息,请参阅操作表、警报、弹出窗口和通道。

设计一种信息结构,使其能够快速、轻松地获取内容。以最少的点击、滑动和屏幕次数来组织你的信息结构。

使用触摸手势来创造流畅性。以最小的摩擦力轻松通过你的界面。例如,你可以让用户从屏幕一侧滑动以返回到上一个屏幕。

使用标准导航组件。尽可能使用标准导航控件,如页面控件、选项卡栏、分段控件、表视图、集合视图和拆分视图。用户已经熟悉了这些控件,他们会直观地知道如何绕过你的应用程序。

使用导航栏遍历数据层次结构。导航栏的标题可以显示层次结构中的当前位置,使用后退按钮可以轻松返回到上一个位置。有关具体指导,请参阅导航栏。

使用选项卡栏显示内容或功能的对等类别。选项卡栏让人们可以快速、轻松地在类别之间切换,而不管当前位置如何。有关具体指导,请参阅选项卡栏。

在iPad上,使用拆分视图而不是选项卡栏。拆分视图提供了与选项卡栏相同的快速导航,同时更好地利用了大屏幕。有关指导,请参见拆分视图。

当你有多个相同类型内容的页面时,请使用页面控件。页面控件清楚地传达可用页面的数量以及哪个页面当前处于活动状态。Weather应用程序使用页面控件来显示特定位置的天气页面。有关具体指导,请参见页面控件。

小贴士
分段控件和工具栏不支持导航。使用分段控件将信息组织到不同的类别中。使用工具栏提供与当前上下文交互的控件。有关这些类型的元素的其他信息,请参见分段控件和工具栏。

请求许可

用户必须授予应用访问个人信息的权限,包括当前位置、日历、联系信息、提醒和照片。虽然人们很欣赏使用可以访问这些信息的应用程序的便利性,但他们也希望能够控制自己的私人数据。例如,人们喜欢能够自动标记照片的物理位置或寻找附近的朋友,但他们也希望选择禁用这些功能。

只有当你的应用程序明确需要个人数据时,你才会请求它。对索取个人信息的请求持怀疑态度是很自然的,特别是在没有明显需要的情况下。确保只有在人们使用明显需要个人数据的功能时才会发出许可请求。例如,当激活位置跟踪功能时,应用程序可能只请求访问当前位置。

解释为什么你的应用需要这些隐私信息。提供要在系统的权限请求警报中显示的自定义文本(称为目的字符串或使用说明字符串),并提供一个示例。文章要简明扼要,使用大小写,要有礼貌,这样人们才不会感到压力。没有必要包括你的应用程序名称–系统已经识别了你的应用程序。有关开发人员指南,请参见保护用户隐私

提示文本
这款应用程序可以在夜间记录你的鼾声,以检测打呼噜的声音。
需要麦克风接入才能获得更好的体验。
打开麦克风接入。

只有在应用程序运行所需的情况下,才会在启动时请求许可。如果你的应用程序显然依赖于他们的个人信息来运行,那么用户不会被这个请求打扰。

不要不必要地询问位置信息。在访问位置信息之前,请检查系统以查看是否启用了位置服务。有了这些知识,你可以延迟警报,直到某个功能真正需要它,或者完全避免警报。要了解如何实现位置功能,请参见MapKitLocation and Maps编程手册。

使用系统提供的警报。你可以在标准权限警报中自定义文本,但避免添加复制标准警报行为或外观的自定义提示。

设置

一些应用程序可能需要提供一种方式来进行设置或配置选择,但大多数应用程序可以避免或推迟这样做。对于大多数人来说,成功的应用程序立刻就能很好地工作,同时也提供了一些调整体验的便捷方法。当你设计你的应用程序以大多数人期望的方式运行时,你就减少了对设置的需要。

从系统中推断出你能做些什么。如果需要有关用户、设备或环境的信息,请尽可能向系统查询,而不是询问用户。例如,不是要求某人输入他们的邮政编码以便你提供当地选项,而是请求允许使用他们的当前位置。如果用户拒绝访问他们的信息,请优雅地退回到手动输入。

深思熟虑地对应用程序中的配置选项进行优先排序。你的应用程序的主屏幕是一个很好的地方,可以显示必要的或经常变化的选项。辅助屏幕更适合偶尔更改的选项。

在设置中显示不经常更改的配置选项。设置应用程序是在整个系统中进行配置更改的中心位置,但用户必须离开你的应用程序才能到达该位置。直接在你的应用程序中调整设置要方便得多。如果你必须提供很少需要更改的设置,请参阅开发人员指南的首选项和设置编程指南中的Implementing a iOS Settings Bundle

在适当的时候提供设置的快捷方式。如果你的应用包含引导用户进入设置的文本,比如“转到设置>我的应用>隐私>定位服务”,提供一个自动打开该位置的按钮。有关开发人员指南,请参阅UIApplication中的openSettingsURLString