自定义presentViewController的转场动画(Swift)

本文详细介绍了如何在Swift中自定义presentViewController的转场动画,通过实现UIViewControllerAnimatedTransitioning协议,创建 Animator 类来处理present和dismiss的动画效果,最终达到个性化的转场视觉体验。
摘要由CSDN通过智能技术生成

原创Blog,转载请注明出处

我的StackFlow
profile for Leo on Stack Exchange, a network of free, community-driven Q&A sites


前言:

iOS默认的presentViewController的切换动画是从底部推入,消失是从顶部推出。但是,因为iOS系统默认的是适配所有转场上下文的。而针对特定的转场上下文,我们能做出更好的效果。

Tips:所谓的转场上下文,就是转场的开始View和结束View,以及对应的ViewController


目标效果

最终的效果


准备工作

首先写出一个CollectionView,每个Cell是一个图片,由于本文的核心是如何转场,所以CollectionView的部分略过。写完了之后,是这样的效果

点击某一个CollectionView Cell查看大图,再点击大图图片消失

这个最初的项目,可以在这里下载

CSDN下载


如何实现自定义转场动画

iOS 8之后,我们可以通过设置ViewControllertransitioningDelegate来设置代理来处理转场动画。

通过文档,可以看到transitioningDelegate是一个实现UIViewControllerTransitioningDelegate协议的对象,先看看这个协议,本文主要利用以下两个方法

  • animationControllerForDismissedController
  • animationControllerForPresentedController

着两个方法的目的是,提供一个遵循UIViewControllerAnimatedTransitioning协议的对象,然后又这个对象来实际处理专场。通过名字就可以看出来,一个是处理present一个是处理dismiss。

本文的设计是让ViewController来处理转场,在didSelectItemAtIndexPath中,设置pvc的转场代理

dvc.transitioningDelegate = self

然后,写一个extension来实现协议

extension ViewController:UIViewControllerTransitioningDelegate{
    func animationControllerForDismissedController(dismissed: 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值