从今年年初开始接触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的差不多.