波浪动画

作者: 雷晏 | 来源:发表于2016-07-05 00:32 被阅读902次

    前言:

    在多次地方我看到一个非常好看的线条动画-波浪。给人很舒服的赶脚,并且也很实用在项目中,比如:下载文件进度,清理缓存,量表等等。。为此,我也写了一片文章来去讲述该波浪动画如何去实现的,并在此基础上拓展。

    先上个y=Asin(ωx+φ)+h各参数变化的效果图:

    通过上面的效果可以看出,影响波浪的高度只有一个参数h,影响波浪的速度只有一个参数φ,影响波浪的波长有两个参数ωA

    具体代码github

    分析:

        看着波浪动画,形状能想到就是正弦或余弦函数。

    要如何去实现这样一个正弦曲线呢。用贝塞尔画曲线?这是不可能的,所以,能想到的就是通过x坐标来一一算出对应的y,然后连起来,就是个正弦曲线。

    我们知道了要用到正弦函数的知识,那么再思考下,到底是怎么才能达到波浪形态呢?。。下面我给个图,大家可以通过这个图来脑补下。

    要形成波浪,应该就是ω系数随着计时器不断累加


    在这里我就不再讲解了,来点实用的。

    效果图:

    波浪如何去实现,我就不多讲了,主要说的是如何填充这个圆,在这里我采取的是CoreGraphics知识去实现的,不太清楚CoreGraphics框架知识的可以先去了解下

    之后,我采取CADisplayLink来实现定时器,用NSTimer可能会使得动画不够流畅。(我比较懒得去自己设置时间罢了,CADisplayLink每秒刷60帧完全够了)。

    具体代码github

    总结:对于早已经把数学忘的差不多的我,来计算正切函数的一系列的东西,开始确实蛋疼,还好功夫不负有心人,终于搞明白了。。遇到不熟悉的不要紧,但你必须要有一颗坚持,上进的心。

    相关文章

      网友评论

      • 阿琥123:楼主好像写错了 让波浪动起来的是φ 速度应该是ω
        阿琥123:不对 速度也是φ
      • 横穿撒哈拉的骆驼:感觉用这种方法, 线很毛糙的感觉
      • LaiYoung_:长知识了雷总
        LaiYoung_:@雷晏 我说真心的。睡觉吧孩子
        雷晏:@LaiYoung 。。。。赖总折煞我了
      • 268aac88307f:可以添加背景之类的吗
        雷晏:@古剑吧的武罗崩鸣停止自转 可以。不影响
      • 鐵甲陳小寶:用shapelayer会不会好点
        雷晏:@鐵甲陳小寶 目的在于明白如何去写,会了,就可以在此基础上去优化性能了。:blush::blush:
        鐵甲陳小寶:@雷晏 恩恩 这种内存是个问题
        雷晏:@鐵甲陳小寶 我也用过cashapeplayer来绘制。同样也可以达到预期的效果,只是想用下另一种实现效果:smile::smile:

      本文标题:波浪动画

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