0

UIPresentationController 与仅使用添加子视图并为要呈现的视图设置动画相比有什么好处?它必须遵守的所有协议似乎有点麻烦,许多人仍然喜欢用简单的帧动画来呈现他们的视图。Apple 引入课程的逻辑是什么?

4

1 回答 1

3

早在 UIPresentationController 被引入之前,Presentation Machinery 就是 UIKit 的一部分。UIPresentationController 提供了更大的灵活性,并允许创建除内置演示之外的自定义演示(全屏、当前上下文、弹出框等)。表示机制和 UIPresentationController 存在的原因有很多:

  • 管理视图层次结构。每当您想要呈现视图时,您并不总是拥有呈现视图控制器。通常不鼓励干扰您不拥有的视图控制器的子层次结构,但在演示的情况下,您需要将演示的视图控制器的视图添加为演示的子视图视图控制器的视图(或其父视图)。当涉及上下文表示链时(例如弹出框->当前上下文->共享表),它变得更加复杂。当使用表示机制时,UIKit 以一致的方式处理视图层次结构管理。它还为 UIPresentationController 类建立了一个容器视图,让它只专注于管理参与演示的视图。UIPresentationController 类可以选择向容器视图添加任意装饰和阴影视图,并响应containerViewWillLayoutSubviews方法中的布局变化。
  • 管理方式。视图控制器以非常特定的顺序呈现和关闭,呈现控制器 API 强制执行此操作。演示机制还确保禁用被演示遮蔽的视图的交互。
  • 维护视图控制器层次结构。表示控制器可以被视为一种更具体的视图控制器包含类型,它们确保呈现的视图控制器仍然是视图控制器层次结构的一部分。这对于 trait 集合传播、外观回调、发送viewWillTransitionToSize:withTransitionCoordinator:、执行视图控制器转换(包括嵌套表示)等等都是必需的。
  • 管理第一响应者。当演示发生时,当前的第一响应者被隐藏起来,然后在解雇后恢复。
于 2016-07-13T02:44:06.367 回答