在我们开发iOS过程中页面切换常用的pop/push或者着show/dismiss 两种方式,这两种方式切换或者弹出页面都有默认的转场动画。但动画随着客户端交互越来越追求个性化的今天,我们就需要自定义转场动画了。

转场 Transitioninios14.4.1更新了什么g API

iOS系统转场动画是通过一套协议来实现的,这使我们可以为自己的应用程序做出最佳实施选择动画片少儿小猪佩奇:使用系统自带或新建自定义appointment的动画来管理页面切换。在本节approve结束时,我们将了解每个协议的职责以及它们之间的连接。下图显示了这套协议 API 的主要组件:

iOS自定义转场动画基本原理
通过上面这张图我们可以看到: 页面控制器ViewController 通过它的转场代理transitioningDelegate 来实现转场。

转场代理Traappointmentnsitioning Delegate

每个页面控制器都可以有一个转场代理transitioningDelegate,这个代理是遵循了 UIViios应用商店ewControllerTransitioningDelega动画片小猪佩奇te 协议的对象。 每当Aapprovepp呈现或关闭ViewController时,UIKit 都会要求transitapproveioningDelegaios是什么意思te提供一个动画控制器Animation Controller。要将默认动画替换为自定义动画,我们必须实现一个过渡协议方法并让它返回适当的动画控制器。

动画控制器Anim动画ation Controller

transitioningDelegate返回的动画控制器(Animation Controlle动画片猫和老鼠r)是一个实现 UIViewControllerAnimatedTransitioning 的对象。它完成了实现动画过渡的“繁重工作”。

过渡上下文Traappreciatensitioning Context

实现了 UIV动画片少儿小猪佩奇iewControllerContextTransitioning 并在过渡过程中发挥着至关重要的作用:它封装了有关过渡中涉及APP的View和ViewController(fromVC和targetV动画片少儿小猪佩奇C)的信息。

正如我们在上图中APP看到的那样,我们不需要自己实现此协议。 UIKit 已经创建和配置过渡上下文,并在每次过渡发生时将其传递给动画控制器。

转场过程

以下是(pre动画大放映sent)转场中涉及的步骤

  1. 开启转场:代码或者通过storyboard+segue 跳转页面
  2. UIKit 向“to”视图控制器(要显示ios15的视图控制器)请求其转场代理。如果没有,UIKIt 使用标准的内置转换。
  3. 动画片少儿小猪佩奇后UIKios16it通过转场代理通过动画大放映animationController(forPresented:presenting:sour动画ce:) 获取动画控制器. 如果返回为nil, 则使用默认动画。
  4. UIKit 构建过渡上下文.
  5. UIKit 通过动画控制器调用transitionDuration(using:)方法来获取动画持续时长
  6. UIKit 调用动画控制器的aniiOSmateTransition(using:)方法来执行过渡动画。
  7. 最后,动画控制器在过渡上下文上调用 completeTransition(_:) 方法ios是苹果还是安卓以指示动画已完成。

消失(dismiss)的步骤几乎相同。在这种情况下,UIKit 向“from”视图控制器(被解除的那个)approve询问它的转场代理。转场代理通过 animationContios15roller(forDismissed:) 提供适当的动画控制器。