弹出框


弹出框是当人们点击一个控件或屏幕上一个区域时显示的一个暂时的界面。




API NOTE

在iOS 8及以后的系统中。你能够使用UIPopoverPresentationController来显示一个弹出框。

UIPopoverPresentationController定义了一个协议来让你调整你的弹出内容的显示风格去适应当前的显示环境。比方说。在水寻常规环境下。你的内容能够在弹出框中显示;在水平紧凑环境下,你的内容能够在一个全屏的模态视图中显示。


一个弹出框:

  • 是一个自包括的模态视图
  • 在水寻常规环境下,显示一个箭头指向它出现的点
  • 有半透明的背景显示背后的模糊内容
  • 能够包括大范围的对象和视图,比方:
列表、图片、地图、文本、网页或自己定义的视图
导航栏、工具栏或标签栏
与当前app视图中的对象交互的控件或对象
(默认情况下,弹出框中的列表视图、导航栏和工具栏使用半透明的背景来让弹出框的模糊层显出。


在水寻常规环境下。操作表单总是在弹出框中显示的。

使用弹出框来显示额外的信息或者一系列与关注的或者选中的对象有关的元素。

NOTE
本指南包括显示在水寻常规环境下的弹出框的UI和用户体验。假设你在全屏显示的水平紧凑环境下显示弹出框。查看Modal View来获取其它全屏模态视图的指南。

不要提供“消除弹出框”的button。当弹出框的显示已经不必要的时候它应该自己主动关闭。

考虑以下的情节来确定何时弹出框是不必要的:


假设弹出框 这样做
提供影响主视图的选项。但不实现观察者 当人们做出一个选择或当他们点击弹出框以外的不论什么地方时,包含显示弹出框的控件,尽快地关闭弹出框。
实现观察者 当人们点击弹出框以外的不论什么地方时,包含显示弹出框的控件。就关闭弹出框。
在这样的情况下,不要在人们做出选择时尽快地关闭弹出框。由于他们可能想要做出额外的选择或者改变当前选择的属性。
完毕一个任务 当人们通过点击弹出框中的button,比方完毕或取消,来完毕或取消一个任务时关闭弹出框。
在这样的情况下,你可能不想在人们点击弹出框以外的地方的时候关闭弹出框,由于人们完毕——或放弃——任务可能非常重要。

或者,当人们点击弹出框以外的地方的时候保存他们的输入,就像在点击完毕时做的一样。


一般来说,当人们点击弹出框以外的区域时保存用户的工作。不是全部弹出框都要求明白的退出,所以人们可能错误地关闭了它。

仅仅在人们点击取消button时抛弃人们做的工作。


让弹出框的button尽可能直接指向显示它的元素。这样做有助于人们记住弹出框的来源以及有关的任务或对象。


确保人们能够在看不到其背后的app内容的情况下使用弹出框。弹出框会模糊其背后的内容,而且人们无法拖拽弹出框到别的位置。


确保同一时间仅仅有一个弹出框在屏幕上。

你不应该在同一时间显示超过一个弹出框(或者自己定义的外观和行为类似弹出框的视图)。特别是,你不应该同一时候显示一个谈出啊匡从还有一个中出现的串联或层级的弹出框。


不要在弹出框的顶部显示模态视图。除了警告框。都不应该显示在弹出框的顶部。


可能的话,同意人们通过一次点击关闭一个弹出框并打开一个新的弹出框。这个行为会在有多个不同的打开弹出框的栏button时非常合适,由于这让人们避免了非常多额外的点击。


不要使用太大的弹出框。

弹出框不应该占领所有的屏幕。

它应该刚好能显示它的内容而且能指向它出现的地方。弹出框的高度不是固定的。所以你能够使用它来显示一长列的清单。只是一般来说。你应该尝试避免在弹出框中滚动来完毕任务。注意系统可能调整弹出框的高度和宽度来让它适应屏幕。


在弹出框内使用标准UI控件和视图。

一般来说,弹出框使用标准控件和视图的时候会看起来更好、更易于用户理解。


确保自己定义的弹出框看起来像一个弹出框。即使通过使用UIPopoverBackgroundView API能够非常easy地自己定义弹出框的非常多视觉部分,不要创建一个用户认识不到是弹出框的设计。假设你改变太多弹出框的外观,用户就不能依赖他们曾经的经验来帮助他们理解怎样在你的app中使用它。


当弹出框依旧可见时改变其尺寸要慎重。你可能在使用它显示相同信息的最小视图和扩展视图时想要改变弹出框的尺寸。当你调整可见的弹出框的尺寸时。使用动画来表示修改一般是个好主意,由于这不会给人们一种新弹出框取代了旧弹出框的印象。