仿格瓦拉电影点击效果

一直觉得格瓦拉的点击动效做的很好,一直很想模仿一下,但是,懒癌患者啊。
前面也看到了叶孤城大大(好像是,但是看github和都没有了?)和
这位帅哥的代码,其实他们已经将80%的工作都做了,我加的很少。
终于昨天下定决心要把它撸出来(污一波,嘻嘻)
效果如图:

仿格瓦拉电影点击效果_第1张图片
d2f0bbaddab0ad6109d3fd31005537da.gif

不知道模仿了多少,大概意思吧。

转场动画

在iOS7之后,苹果提供了自定义转场动画的API,具体的可以阅读obj.cn的文章,这里面讲的很详细,首先就是要自定义一个实现UIViewControllerAnimatedTransitioning 这个协议的对象,由这个对象负责处理转场的动画.

UIViewControllerAnimatedTransitioning协议

该协议由2个需要我们实现的方法,

  • (NSTimeInterval)transitionDuration:(id )transitionContext和
  • (void)animateTransition:(id)transitionContext
    上面的是动画的时长,下面的方法提供了一个context,从该context里面我们可以的到转场的开始和结束控制器,时长我们设定为1秒钟
    时长.png

    第二个方法内我们的代码比较多
    仿格瓦拉电影点击效果_第2张图片
    第二个方法.png

    首先是获取开始的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

你可能感兴趣的:(仿格瓦拉电影点击效果)