一直觉得格瓦拉的点击动效做的很好,一直很想模仿一下,但是,懒癌患者啊。
前面也看到了叶孤城大大(好像是,但是看github和简书都没有了?)和
这位帅哥的代码,其实他们已经将80%的工作都做了,我加的很少。
终于昨天下定决心要把它撸出来(污一波,嘻嘻)
效果如图:
不知道模仿了多少,大概意思吧。
转场动画
在iOS7之后,苹果提供了自定义转场动画的API,具体的可以阅读obj.cn的文章,这里面讲的很详细,首先就是要自定义一个实现UIViewControllerAnimatedTransitioning 这个协议的对象,由这个对象负责处理转场的动画.
UIViewControllerAnimatedTransitioning协议
该协议由2个需要我们实现的方法,
- (NSTimeInterval)transitionDuration:(id <UIViewControllerContextTransitioning>)transitionContext和
- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext
上面的是动画的时长,下面的方法提供了一个context,从该context里面我们可以的到转场的开始和结束控制器,时长我们设定为1秒钟
第二个方法内我们的代码比较多
首先是获取开始的controller和结束的controller,然后我们开始做动画。
首先是位移动画,这里直接使用UIview的动画偷懒,哈哈。设置开始controller的imageview的frame从开始的controller变为结束的controller的(有点绕),并要设置shadow,使imageview有种提上来的感觉。
结束之后将结束controller显示出来,并开始mask动画,就是上文提到的那么仁兄的思路(有关mask动画不懂的可以Google一下),到此大部分动画就完成了,但是如果要做到格瓦拉那样的,还需要多做点其他的操作。
这篇干货基本等于0,献丑了。
在此要感谢HenryCheng。
相关资料:
http://www.jianshu.com/p/8c29fce5a994,
http://objccn.io/issue-5-3/
代码放在github