1.无障碍
iOS为具有视力丧失,听力损失和其他残疾的用户提供很多辅助功能。大多数基于UIKit的应用程序都可以轻松访问,允许更多的人使用您的应用程序,同时为所有人提供同样沉浸式的体验。
为图像、图标和界面元素提供替代文本标签。替代文字标签在屏幕上看不到,但是他们让VoiceOver听起来可以描述屏幕上的内容,使视觉障碍的人更方便导航。
响应辅助功能偏好。如果应用程序使用UIKit实现其用户界面,文本和界面元素将自动适应某些辅助功能首选项,例如粗体和较大文本。应用程序还应在适当时检查并响应辅助功能首选项,例如启用减少动作的选项。使用自定义字体的应用程序应尝试匹配系统字体的辅助功能。
测试您的应用程序与辅助功能。除了文字和动作变化之外,辅助功能选项可以改变对比度,反转颜色,降低透明度等等。启用这些设置,并观察启用这些功能的用户的应用程序的外观和行为。
涵盖隐藏字幕和音频说明。隐藏式字幕使得聋哑人及听觉困难者理解视频中的口语对话和其他可听见的内容。音频描述为视力障碍者提供重要视频内容的口头叙述。
更多详情请参阅iOS Accessibility和 Accessibility Programming Guide for iOS。
2.加载
当内容加载时,空白或静态屏幕可能会使应用程序看起来像冻结啦,导致迷惑和沮丧,并可能导致用户卸载应用程序。
加载时确保其清晰可见。至少显示一个活动转轮表示活动正在进行,显示进度条更佳,使用户可以衡量他们将要等待多久。
尽快显示内容。在用户看到期望的屏幕之前,不要让用户在加载页面等待太久。立即显示屏幕,并在内容不可用位置使用占位符文本图形或动画标识出来。在内容加载时替换这些占位符元素。只要有可能,在后台预加载即将展现的内容,例如在播放动画或用户正在浏览平面或菜单时。
指导或者取悦用户以掩饰加载时间。考虑显示关于游戏,娱乐视频系列或有趣的占位符图形的提示。
自定义加载屏幕。虽然标准进度指示器通常是可以的,但有时候它们会感觉脱离情景。考虑运用与应用程序或游戏风格相匹配的自定义动画和元素,来设计更加身临其境的体验。
更多的指引请参阅Progress Indicators。
3.模态视图
模态视图保证用户在完成任务、关闭消息或视图后才能采取其他操作。操作列表,警示窗和活动视图都属于模态视图。当屏幕上出现模态视图时,用户必须通过点击按钮或以其他方式退出模态视图来进行选择。一些应用程序实现模态视图,例如在日历中编辑活动或在Safari中选择书签。模式视图可以占据整个屏幕,整个父视图(如弹出窗)或屏幕的一部分。模态视图通常包括退出视图的完成和取消按钮。
尽量少用模态视图。一般来说,人们喜欢以非线性方式与应用交互。只有当一个关键的事情值得用户注意时(一个任务必须完成或放弃才能继续使用该应用程序,或保存重要的数据),再创建一个模态视图。
提供一种明显而安全的方式来退出模态视图。确保当用户关闭模态视图时,他们清楚知道自己这一举动的结果。
保持模态任务简单,简短,不需要太多注意力。不要在应用程序中再创建一个应用程序。如果一个模态任务太复杂,当用户进入模态状态,他们会忘记他们暂停的任务。特别注意创建涉及层次结构的模态任务,因为用户可能会迷失方向,而忘记了如何回溯其步骤。如果模态任务必须包含子视图,请提供通过层次结构的单一路径和完成路径。避免在完成任务之外使用完成按钮。
如果合适,显示标识任务的标题。您还可以在视图的其他部分提供更完整的描述任务或提供指导的文本。
保留警报,传达必要和理想的可操作信息。警报中断了体验,需要轻按关闭,所以重要的是让用户觉得这种中断是有必要的。详情请参阅Alerts.
保持通知的优先级。在“设置”中,用户可以决定如何接受应用的推送信息,遵守这些偏好,以免他们完全屏蔽您的应用通知。
不要在弹出窗口上显示模态视图。除了警报之外,任何应用都不要出现在弹出窗口上。在极少数情况下,当您需要在弹出窗口中执行操作后提供模态视图,请在显示模态视图之前关闭该弹出窗。
与您的应用程序协调模态视图外观。例如,模式视图可能包括导航栏,在这种情况下,请使用与您应用中导航栏相同的外观。
选择适当的模态视图样式。您可以使用以下任何一种样式:
1)全屏:覆盖整个屏幕,用于可以在模态视图的上下文中完成的潜在复杂任务。
2)页面:部分涵盖了以横向为主的较大设备的基础内容。所有未覆盖的区域变暗,以防止与它们相互影响。在较小的设备上以纵向方向覆盖整个屏幕。用于可以在模态视图的上下文中完成的潜在复杂任务。
3)表单:以屏幕为中心出现,但如果键盘可见,则可能要重新定位。所有未覆盖的区域变暗,以防止与它们相互影响。可以在较小的设备上覆盖整个屏幕。用于收集信息。
4)当前内容:显示为与其父视图相同的大小。用于在分割视图窗格,弹出窗或不是全屏的其他视图中显示模态内容。
选择适当的转换样式以显示模式视图。使用与您的应用程序协调的转换样式,并提高临时上下文转换的意识。默认的转换从屏幕底部垂直滑动模态视图,一旦关闭就退回。翻转式过渡通过水平翻转视图以显示模态视图。视觉上,翻转式模态视图看起来像当前视图的背面。一旦关闭,它会翻转回来。在您的应用程序中使用一致的模态转换样式。
模态视图开发指导请参阅UIViewController和UIPresentationController.
4.导航
导航符合用户的期望,用户才能清楚应用程序的导航。你的工作是通过展示应用程序的结构和目的的方式实现导航,而不是关注导航本身。导航应该让用户感觉自然和熟悉,不应该主导界面或太吸引注意而将焦点远离内容。在iOS中,有三种主要的导航样式。
4.1分层导航
每个屏幕一个选择,直到到达终点。要转到另一个终点,用户必须回溯他的步骤,或从头开始并作出不同的选择。设置和邮件使用的就是此导航样式。
4.2扁平导航
多个内容中切换类别。音乐和App Store使用此导航样式。
4.3内容驱动或经验驱动的导航
通过内容自由移动,或内容本身定义导航。游戏,书籍和其他沉浸式应用程序通常使用这种导航方式。
一些应用程序组合多种导航样式。例如,使用扁平导航的应用程序可以在每个类别内实现分层导航。
始终提供一条清晰的路径。用户应该总是知道他们在应用程序中的位置以及如何到达下一个目的地。不管导航方式如何,内容的路径都应该是逻辑的,可预见的,易于遵循。一般来说,给用户到每个屏幕一个路径。如果他们需要在多个上下文中查看屏幕,请考虑使用操作列表,警示框,弹出窗口或模态视图。更多详情请参阅Action Sheets, Alerts, Popovers, 和Modality.
设计一个可以快速、轻松地获得内容的信息结构。以需要最少的点击数量,最少滑动和屏幕的方式整理您的信息结构。
使用触摸手势创造流动性。通过最小不适轻松移动界面。例如,您可以让用户从屏幕侧面滑动返回上一屏幕。
使用标准导航组件。只要有可能,使用标准导航控件,如页面控件、标签栏、分段控件、表视图、集合视图和分屏视图。用户已经熟悉了这些控件,将能直观地知道如何浏览应用程序。
使用导航栏遍历数据层次结构。导航栏的标题可以显示层次结构中的当前位置,后退按钮可以轻松返回到先前位置。详细指引请参阅Navigation Bars.
使用标签栏来呈现对等类别的内容或功能。不管当前位置如何,标签栏可让用户快速轻松地在不同的类别之间切换。详细指引请参阅Tab Bars.
当您有多页相同类型的内容时,请使用页面控件。页面控件清楚地传达可用页数和当前活动的页数。天气应用程序使用页面控制来显示特定位置的天气页面。详细指引请参阅Page Controls.
提示:
分段控件和工具栏不能使用导航。采用分段控件将信息组织成不同的类别;使用工具栏提供与当前内容交互的控件。对于这类型元素的更多信息,参见分段控件和工具栏(Segmented Controls and Toolbars)。
5.引导
启动是第一次与新用户连接及重新连接回流用户的机会。设计师有机会设计快速、有趣和有教育意义的启动体验。
设计启动屏幕。启动屏幕会在您的应用启动时出现,给用户的印象应是应用响应快速,同时允许加载初始内容。这个屏幕很快被你应用程序的第一个屏幕所替代,所以它应该非常类似于这个屏幕,也具有可本地化的文本和交互元素。详情请参阅启动屏幕Launch Screen
以适当的方向启动。如果您的应用程序同时支持纵向和横向模式,则应使用设备的当前方向启动。如果您的应用程序仅以一个方向运行,则应始终以该方向启动,并让用户在必要时旋转设备。除非有不可辩驳的原因,否则横向模式中的应用程序应该自动正确定位,无论设备是左右旋转。更多指引请参阅Adaptivity and Layout
快速启动。避免显示启动屏幕、菜单和说明,那会需要更长时间才能访问内容并开始使用应用程序。相反,让用户直接进入应用。如果应用程序需要教程或介绍序列,请提供一种跳过它们的方式,并且避免它们展示在回流用户面前。
预见帮助需求。主动寻找用户可能被困住的地方。例如,一个游戏可以在暂停时或当角色不推进时显示有用的提示。让用户重播教程,以防他们第一次错过重要信息。
只增加必要的指导。为初学者提供指导是很好的,但教导不能代替好的应用程序设计。首先,确保应用直观。如果需要太多的指导,请重新审视您的应用程序的设计。
使学习变有趣和可发掘。边做边学比阅读长长的指导书更有趣和有效。使用动画和互动逐渐渗透教学。避免显示交互式的截图。
避免过早询问设置信息。用户期望应用程序正常工作。为大多数用户设计应用程序,允许少数需要不同配置的用户调整设置以满足他们的需求。在可能的范围内,通过设备设置或默认值,或同步服务(如iCloud)导出设置信息。如果您必须要求设置信息,请在进入应用的第一时间提示,并允许用户稍后在应用程序的设置中进行修改。
避免在应用程序内显示许可协议和免责声明。App Store在应用程序下载之前显示协议和免责声明。如果必须在应用程序中包含这些项目,请以均衡的不会中断用户体验的方式显示。
在应用程序重新启动时恢复关闭前的状态。请勿清空用户设置。保留并恢复您的应用程序的状态,以便用户可以继续离开前的操作。
不要过快或过频繁地要求用户评价应用程序。过早或过于频繁的要求评级,令人烦感,也会导致收到的有效反馈数量减少。为了得到良好的反馈,给用户和应用程序足够的接触时间从而形成意见或印象,然后再要求评级。始终提供一种退出评分提示的选择,而不要强迫用户评估应用程序。
不要鼓励重新启动。重新启动需要时间,使您的应用程序看起来不可靠,难以使用。如果应用程序有内存或其他问题,除非重启系统,否则难以运行,则需要解决这些问题。
6.请求许可
用户必须授予应用程序访问个人信息的权限,包括当前位置、日历、联系信息、提醒和照片。虽然用户知道允许应用访问这些信息的方便性,但他们也希望控制其私人数据。例如,人们喜欢能够自动标记照片的物理位置或找到附近的朋友,但他们也希望有禁用这些功能的选项。
仅在应用程序明确需要时才能请求私人数据。怀疑个人信息的请求是很寻常的,特别是如果没有必要的需求。确保权限请求仅在用户使用时,明确需要个人数据的功能时才会发生。例如,应用程序可能只会在激活位置跟踪功能时请求访问当前位置。
如果需求不明显,解释为什么您的应用需要这些信息。您可以将自定义文本添加到系统提供的权限请求警示窗中,文本信息详细并有礼貌,不会让用户感到压力。保证文本简短,并使用句子。没有必要包含应用程序名称,系统已将应用程序标识为提出请求的应用。
只有在需要权限应用程序才能启动时才请求权限。如果应用程序的确依赖于用户的个人信息来操作,用户将不会觉得被请求打扰了。
不必要就不要请求位置信息。访问位置信息之前,请检查系统是否启用了位置服务。有了这些信息,您可以延迟警示窗,直到功能真正需要它,或者完全避免警示窗。
想了解更多如何实现位置特性,请查阅Location and Maps Programming Guide。
7.设置
一些应用程序可能需要提供一种设置或配置选择的方法,但大多数应用程序可以避免或延迟这样做。成功的应用程序可以适用于大多数人,同时也提供一些方便的方法来调整体验。当您设计您的应用程序功能适合大多数人的期望,就能减少了对设置的需求。
优先从系统中获取。如果您需要有关用户、设备或环境的信息,请尽可能查询系统,而不是询问用户。例如,不要要求用户输入邮政编码来显示本地选项,而是请求允许使用他们当前的位置。
在应用程序中优先考虑配置选项。应用程序的主界面适合放置必不可少的或经常变化的选项。二级页面适用放置偶尔更改的选项。
在“设置”中展示不经常更改的配置选项。“设置”应用程序是整个系统进行配置更改的中心位置,但用户必须从当前应用程序跳出。如果能在当前应用程序内调整设置会更加方便。如果必须提供很少需要更改的设置,请参阅开发指导Preferences and Settings Programming Guide中的Implementing an iOS Settings Bundle。
在适当的时候给出“设置”快捷方式。如果您的应用包含指导用户进入设置的文字,例如“转到设置> MyApp>隐私>位置服务”,请提供自动打开该位置的按钮。想了解更多如何实现此行为,请查阅UIApplication中的Settings Launch URL。