Custom View Controller Transition Animation iOS自定义VC转场动画

本文介绍了iOS中自定义View Controller转场动画的实现,包括Transition Delegate、Animation Controller、Transitioning Context和Transition Coordinator的角色,详细阐述了自定义动画的执行过程,并提供了代码实现示例。
摘要由CSDN通过智能技术生成

Transition animation定义了应用程序的View改变时产生的视觉反馈。除了UIkit提供的标准转场样式,我们也可以使用自定义Transition Animation来实现自己想要的视觉效果。在iOS7之后,苹果以协议的方式开放了自定义转场的API, 使得遵守协议的对象都能参与转场。本文将介绍自定义动画的相关知识。

自定义动画协议

1. Transition Delegate

每一个 View Controller 都有一个 transitioningDelegate (UIViewControllerTransitioningDelegate 的对象)
每当要进入或关闭 View Controller 时,UIKit 都会请求其 transitioningDelegate 提供Animation Controller 使用。要将默认动画替换为您自己的自定义动画,必须实现 transitioningDelegate,并使其返回适当的 Animation Controller。

2. Animation Controller

transitioningDelegate 返回的 Animation Controller (UIViewControllerAnimatedTransitioning 的对象)承担了转场动画的繁重任务。除了Animation Controller,transitioningDelegate还会返回另外两种对象:
Interactive Animation Controller:使用触摸事件或者手势识别器来驱动自定义动画,遵循UIViewControllerInteractiveTransitioning协议
Presentation controller:管理着视图控制器在屏幕上显示时的呈现样式,可以自定义呈现样式。
如果没有提供Animation Controller,UIKit在VC的modalTransitionStyle属性中会使用标准的Transition animation。
图1:transitiDelegate关联图

3. Transitioning Context

在 Transition animation执行之前,UIKit会构造一个Transitioning Context,用于保存Transition animation中涉及的所有VC和View的引用,以及转场信息,包括动画是否是交互式。该协议无须手动实现,UIkit会在每次转场时将其传递给Animation Controller。Animation Controller 通过这些信息来具体实现动画效果。
图2:Transitioning Context关联图

4. Transition Coordinator

UIKit会创建一个Transition Coordinator对象来帮助执行额外的动画。除了present和dismiss外,当屏幕旋转或者VC的frame更改时,也可能会触发Transition animation。所有的Transition animation都是对View层次结构的更改。Transition Coordinator可以跟踪同时执行额外动画。要访问Transition Coordinator,需获取参与转场的VC的transitionCoordinator属性,Transition Coordinator仅在转场动画执行过程中存在。

自定义动画执行过程

当需要显示的VC的transitionDelegate中包含一个有效对象时,UIkit会使用自定义的Animation Controller对象来显示此VC。UIKit通过 animationController(forPresented:presenting:source:) 请求 transitioningDelegate 的一个 animation controller。如果返回nil,转场使用默认动画。自定义动画执行流程

  1. UIkit首先调用 Transition Animation委托的interactionControll

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值