您的位置:首页 > 产品设计 > UI/UE

基于UIViewControllerAnimatedTransitioning自定义转场

2015-12-15 11:24 661 查看
从今年年初开始接触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的差不多.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: