我们经常会在一些应用里边见到波浪的动画,比如之前淘宝个人中心顶部的双波浪,今天我们就来看一下这个效果是怎么实现的。
原理
绘制波浪
实际上这个波浪就是使用正弦曲线公式 y=Asin(wx+u)+K
绘制出来的,具体样式如图。
各个参数代表的意义如下:
- A:振幅,控制波浪的高度;
- w:角速度 w = 2PI/T;
- T:周期;
- u:初相;
- K:y轴方向上的偏移量。
动起来
如何能让波浪在画面上动起来呢,我们可以使用CADisplayLink
或者NSTimer
使画面中的线条一直在绘制。
这里推荐使用CADisplayLink
因为它可以保持较高的刷新率,刷新率为每秒60次。
在使用CADisplayLink
时调用UIView中的drawRect
方法不停地重绘页面。就可以实现动画的样式。
实现的效果就是这样:
实现
首先我们先创建一个UIView
并且注册一个CADisplayLink
定时器,并把它加入到NSMainRunLoop
中。
|
|
在调用的runWave
中我们使用setNeedsDisplay
方法调用UIView的drawRect
方法,在这里我改变了K的值,也就是_waterLineY
来让波浪一直向下移动,并且通过改变_waveCycle
让波浪移动。
|
|
然后在drawRect
中绘制正弦曲线就可以了。
|
|