除了帮助iOS中的特征收集之外,UIPresentationController还需要什么?

时间:2016-06-27 09:47:01

标签: swift uipresentationcontroller

UIPresentationController比使用添加子视图和动画您想要呈现的视图有什么好处?它必须符合所有协议似乎有点麻烦,许多人仍然喜欢用简单的帧动画呈现他们的视图。在介绍课程时,Apple的逻辑是什么?

1 个答案:

答案 0 :(得分:3)

在介绍UIPresentationController之前很久,演示机器就是UIKit的一部分。 UIPresentationController提供了更大的灵活性,允许创建自定义演示文稿,除了内置演示文稿(全屏,当前上下文,弹出窗口等)。演示机制和UIPresentationController存在的原因有很多:

  • 管理视图层次结构。每当您想要呈现视图时,您都不会总是拥有呈现视图控制器。通常不鼓励干扰您不拥有的视图控制器的子层次结构,但在演示文稿的情况下,您需要添加呈现的视图控制器&#39 ;作为呈现视图控制器视图(或其超级视图)的子视图。当涉及上下文表示链时(例如,popover - >当前上下文 - >共享表),它变得更加复杂。使用演示机器时,UIKit以一致的方式处理视图层次管理。它还为UIPresentationController类建立了一个容器视图,使其专注于仅管理参与演示的视图。 UIPresentationController类可以选择将任意装饰和阴影视图添加到容器视图,并响应containerViewWillLayoutSubviews方法中的布局更改。
  • 管理模式。视图控制器以非常特定的顺序显示和解除,并且表示控制器API强制执行此操作。演示机制还确保对于被演示文稿遮挡的视图禁用交互。
  • 维护视图控制器层次结构。可以将表示控制器视为更具体的视图控制器包含类型,它们确保呈现的视图控制器仍然是视图控制器层次结构的一部分。这对于特征收集传播,外观回调,发送viewWillTransitionToSize:withTransitionCoordinator:,执行视图控制器转换(包括嵌套演示)以及更多内容都是必需的。
  • 管理第一响应者。当演示发生时,当前的第一响应者被隐藏起来,然后在解雇后恢复。