基于UIViewControllerAnimatedTransitioning自定义转场

来源:互联网 发布:阿里云ecs搭建网站 编辑:程序博客网 时间:2024/06/05 09:14

从今年年初开始接触ios,也开始接触博客.当然一开始写一些没营养的东西,之后就没怎么写博客了,满满青涩的回忆.那么来说一下最近在豆瓣电台看到的一效果----滑动转场


上面就是一个大概的效果那么在ios怎么实现呢?做为一个刚来到ios的新手,叫我去搜api这是不可能的.那么就看一些大神博客.无意中就会找到自己想要的东西.那么首先建一个类继承NSObject的遵守UIViewControllerAnimatedTransitioning协议如下:


    看到注释.我就不解析了.那么就直接看现实:


    然后去主控制器实现:


    上面方法是控制器由storyboard创建时初始化的,下面是纯代码或xib创建时初始化的

    接下来控制器遵守UIViewControllerTransitioningDelegate协议,让要被present的控制器的

transitioningDelegate代理为主控制器:


   在主控制器中实现代理方法:


   那么以上就可以实现一个控制器被present出来了.

接下来实现添加手势:

   要在过程中添加任何东西.sdk预留了UIPercentDrivenInteractiveTransition这个类作为接口,那么继承这个类来实现其中的方法就可以了:

 - (void)updateInteractiveTransition:(CGFloat)percentComplete;

更新百分比,一般通过手势识别的长度之类的来计算一个值,然后进行更新.

 

 - (void)finishInteractiveTransition;

 报告互交取消,返回切换前的状态

 

 - (void)cancelInteractiveTransition;

 报告互交完成,更新到切换后的状态




实现部分:



那个比值系数为什么是0.48,通过滑动手势推出来的能让手势和view连动最接近的一个数值.

在stateChange里面坐标变化会在如下图的2区域里面.至于为什么会变成这样的.我也不是很清楚.


具体怎么dismiss效果我就不多说了和present的差不多.

0 0
原创粉丝点击