引自《iOS12界面交互设计规范(iOS 12 Human Interface Guidelines)》
特殊情景状态通过创造一个焦点来防止用户在完成一个任务或者关闭信息/视图之前去做其它的操作。比如活动列表,警告框,活动视图等均存在这种特殊的情景状态。具体为当一个情景状态视图出现后,用户必须通过主动的点击按钮来进行选择(除非用户直接退出当前状态)。有些应用即存在这类应用场景,如正在编辑状态的日历应用或者正在添加书签的Safari应用。一个特殊场景状态视图是可以占据整个屏幕或者说上层视图的,如浮层或者弹出框。一个特殊场景状态视图通常包含一个“完成”按钮和一个用来退出当前状态的“退出”按钮。
警告框
状态视图
尽可能少的使用特殊情景状态(Minimize the use of modality.)一般来说,用户更喜欢没有太多限制的与应用进行交互。尽可能只有在非常紧急的需要引起用户注意,或当一个任务必须被完成或舍弃才能继续使用应用,或保持一些重要数据的时候再去考虑创造一个特殊情景状态。
提供一个明显且安全的退出机制(Provide an obvious and safe way to exit a modal task. )确保用户了解到他们关闭或取消特殊情景模式可能会带来的后果。
确保状态简短且高度集中(Keep modal tasks simple, short, and narrowly focused. )不要在你的应用中创建一另一个应用。如果一个模态任务太过复杂,用户在进入模态视图时就会看不到视他们本想执行的任务。当创建一个包含多层级视图的模态任务时请格外谨慎,因为用户可能会在多个视图中迷失并不知道如何返回。如果一个模态任务必须含有次视图,那么请提供单
级的跳转路径以及清楚的完成路径。除非完成任务否则不要使用标有“完成”的按钮。
恰当的时候为模式定义并设置一个标题(Display a title that identifies a task, if appropriate.)你也可能在视图的其它部分提供详细描述任务的文字或是提供指导。
只在需要传达关键必要信息的时候再去使用警告框(Reserve alerts for delivering essential—and ideally actionable—information. )警告框干扰体验,并且需要单击才能关闭,所以必须要让用户认为这个打断是有理由的。了解更多,请参阅Alerts。
尊重用户的通知偏好设置(Respect notification preferences. )在设置里,用户明确规定了他们想要如何地接受来自你应用的通知。遵循这些个人偏好,这样他们就不会想要完全地关闭来自你应用的通知推送。
不要让特殊情景状态视图出现在浮层上(Don’t display a modal view above a popover. )除了警告框,任何元素都不应该覆盖在浮出层之上。在极少数情况下,你需要让模态视图在用户完成浮出层内的任务之后弹出,那么请先关闭浮出层再展示模态视图。
统一特殊情景视图与应用的视觉风格(Coordinate modal view appearance with your app. )一个模态视图可能包含一个导航栏。在这种情况下,请使用与你应用内的导航栏一样的视觉风格。
选择合适的特殊情景状态视图样式(Choose an appropriate modal view style.)你可以使用到以下任何一种样式:
全屏(Full screen.)覆盖整个屏幕,通常用来进行比较复杂的特殊情景状态视图展示。
分屏(Page sheet.)在大屏幕设备或设备横屏时遮盖下层其中一部分内容,对于未被遮盖的区域进行模糊处理避免用户与之进行交互。在小屏幕设备或竖屏时遮盖整个屏幕。
分块(Page sheet.)通常在屏幕中心展示,键盘弹出时位置可能会有所改变。所有未被遮盖的区域进行模糊处理避免用户与之进行交互。小屏幕设备中可能会直接这个整个屏幕。
等屏(Current context. )与父级视图大小一致,用以在分块视图,浮出层或其它非全屏视图中进行特殊请教状态的展示。
选择一个合适的显示特殊情景状态视图的过渡方式(Choose an appropriate transition style for revealing a modal view.)使用与应用风格相符的过渡方式来加强用户对当前内容转变的认知。默认的过渡方式让特殊情景状态视图垂直地从屏幕底部向上滑出,然后在被关闭时下滑。弹出样式的过渡是指当前视图水平滑出,显示出特殊情景状态视图,看起来就好像特殊情景状态视图藏在当前视图的背后。当特殊情景状态视图被关闭时,原先的视图便重新滑回来。在你的应用内容部使用统一的特殊情景状态过渡方式。
更多关于特殊情景状态视图相关内容,请参考UIViewController和UIPresentationController。