美文网首页
仿支付宝咻一咻功能

仿支付宝咻一咻功能

作者: 胖胖的立 | 来源:发表于2017-04-07 16:15 被阅读0次

偶然间在CocoaChina上看到了一个动画类的文章,还有支付宝咻一咻的动图。俗话说,自己动手,丰衣足食,从而就出现了下面这个动图(动图做的稍有偏差)。源代码查看仿支付宝咻一咻

其实这个功能实现起来并不是很困难,我是用的最笨的办法,创建了三个图层,利用定时器来控制不同图层添加动画的不同时间。可以先添加一个图层来实现类似的效果。

显而易见的是,在单个图层的动画中,包括大小的变化和透明度的变化,这个时候就需要一个动画组CAAnimationGroup,将不同的动画添加到数组中负值给CAAnimationGroup唯一的属性animations之后,所有的动画就可以并发执行。需要注意的是,动画组中的动画不会被压缩,所以超出动画组时常的部分将要被剪掉。在设置动画组的时候还需要提到的一个是CAMediaTimingFunction —— 速度控制函数,顾名思义,就是用来控制动画的执行速度效果的。他包括以下几种类型:

kCAMediaTimingFunctionLinear(线性):匀速,给你一个相对静态的感觉

kCAMediaTimingFunctionEaseIn(渐进):动画缓慢进入,然后加速离开

kCAMediaTimingFunctionEaseOut(渐出):动画全速进入,然后减速的到达目的地

kCAMediaTimingFunctionEaseInEaseOut(渐近渐出):动画缓慢的进入,中间加速,然后减速的到达目的地。这个是动画的默认行为

kCAMediaTimingFunctionDefault(默认):同上

说完动画组接下来就是更重要的添加到动画组中的动画了。我在写demo的过程中用了两种,分别是CABasicAnimation和CAKeyframeAnimation。

先说一下他们的共同的属性,如下:

duration:动画的时长

repeatCount:重复的次数

repeatDuration:设置动画的时间。在该时间内动画一直执行,不计次数。

beginTime:指定动画开始的时间。从开始延迟几秒的话,设置为【CACurrentMediaTime() +秒数】的方式

timingFunction:设置动画的速度变化

autoreverses:动画结束时是否执行逆动画

一些常用的animationWithKeyPath值的总结:

transform.scale:比例转化,例如:@(0.8)

transform.scale.x:宽的比例,例如:@(0.8)

transform.scale.y:高的比例,例如:@(0.8)

transform.rotation.x:围绕x轴旋转,例如:@(M_PI)

transform.rotation.y:围绕y轴旋转,例如:@(M_PI)

transform.rotation.z:围绕z轴旋转,例如:@(M_PI)

cornerRadius:圆角的设置,例如:@(50)

backgroundColor:背景颜色的变化,例如:(id)[UIColor purpleColor].CGColor

bounds:大小,中心不变,例如:[NSValue valueWithCGRect:CGRectMake(0, 0, 200, 200)];

position:位置(中心点的改变),例如:[NSValue valueWithCGPoint:CGPointMake(300, 300)];

contents:内容,例如:UIImageView的图片imageAnima.toValue = (id)[UIImage imageNamed:@"to"].CGImage;

opacity:透明度,例如:@(0.7)

contentsRect.size.width:横向拉伸缩放,例如:@(0.4)最好是0~1之间的

接下来就是他们的区别了:CABasicAnimation只能从一个数值(fromValue)变到另一个数值(toValue),而CAKeyframeAnimation会使用一个NSArray保存这些数值,如下:

values:就是上述的NSArray对象。里面的元素称为”关键帧”(keyframe)。动画对象会在指定的时间(duration)内,依次显示values数组中的每一个关键帧

keyTimes:可以为对应的关键帧指定对应的时间点,其取值范围为0到1.0,keyTimes中的每一个时间值都对应values中的每一帧.当keyTimes没有设置的时候,各个关键帧的时间是平分的。

其实CABasicAnimation可看做是最多只有2个关键帧的CAKeyframeAnimation。

代码对比如下:

创建完动画之后,将动画添加到图层上就可以实现单个图层的动画了,那么想要实现类似支付宝咻一咻的动画需要怎么做呢?前面也说了,我用的是最笨的方法,创建了三个图层,通过定时器来控制不同图层的动画执行时间。这里需要注意的一点就是动画的时长duration、图层的个数还有定时器的时间是相互牵制的,不然就会出现每个图层出现的很混乱的结果。想要什么样的效果就自己慢慢调吧。

相关文章

  • 仿支付宝咻一咻功能

    偶然间在CocoaChina上看到了一个动画类的文章,还有支付宝咻一咻的动图。俗话说,自己动手,丰衣足食,从而就出...

  • 仿支付宝咻一咻效果

    昨天写了一个气泡波纹效果,觉得不够实用,今天写一个仿支付宝【咻一咻】的效果,之前想在网上找找,可是没有找到。先看效...

  • ios咻一咻,雷达功能

    demo有详细的注释,菜鸟一名互相学习=-=。 demo地址

  • 咻···咻···咻···

    2018年10月1日9:00至10月7日18:00 我们一起赋予这段时间意义和价值 徐敬东老师倾心分享,不断带给大...

  • 咻咻咻

    本来不想写的 好累好累了 今天该完成的完成了 早起背单词记账步数✅ 工作上帖子没发 该打 100条哇 约了客户 没...

  • Swift中利用Runtime解决UIButton重复点击的问题

    写在前面 今年春节的时候,支付宝“咻一咻”红包火了起来,整个春晚都在疯狂地点击“咻一咻”,后来发现不对劲,要是全国...

  • 咻咻咻 duang

    咻咻咻 duang听到这个声音有没有觉得很耳熟呢,不错,这就是陈翔六点半啊。 第一次看六点半的视频还是在上大学的时...

  • 雷达波/支付宝咻咻咻/水波扩散效果

    最近UI给了个产品图,大致效果就是类似 " 雷达波 " 或者 " 支付宝的咻咻咻 " 那个扩散效果,看到UI的第一...

  • 支付宝咻一咻动画探究

    过年支付宝升级,新版本多了咻一咻功能,里面动画做得挺不错的,特意研究了里面的动画都是怎么实现的。首先是一进去看到...

  • [iOS]支付宝咻一咻动画

    效果图 模仿支付宝咻一咻的动画,动画由两部分组成,一是scale由小变大,二是透明的由1到0 两个部分的变化都是由...

网友评论

      本文标题:仿支付宝咻一咻功能

      本文链接:https://www.haomeiwen.com/subject/saqhattx.html