美文网首页
iOS如何绘制一个波动动画

iOS如何绘制一个波动动画

作者: jiezheng | 来源:发表于2017-04-16 18:48 被阅读0次
    需求如下:

    在用户进行语音录入时,根据声音的大小出现不同振幅的波动动画

    动画效果

    拿到效果图是有点懵逼的,该如何实现呢?
    先分析下吧。


    默认状态效果

    动画基本都是点和线,感觉思路通畅了很多。
    首先绘制默认状态横排的点。

    CGContextFillRect(context, CGRectMake(x, y, 2.5,2.5));
    CGContextStrokePath(context);
    

    波动动画怎么办呢,同样思路,波动的效果只是比较高一点的点。绘制方法不变,波动高度可以参考三角函数.


    COSX
    double maxPercent = fabs(cos(M_PI_2 - M_PI_4* num));
    

    如何让动画动起来呢?
    肯定是定时器:

     _animationDisplayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(animationDisplay)];
     _animationDisplayLink.paused = NO;
     _animationDisplayLink.frameInterval = 3;
     [_animationDisplayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
    

    至于为什么要用CADisplayLink 而不用NSTimer
    参考iOS - CADisplayLink与NSTimer

    整体思路就是这些,很多细节没有描述,可以自己看代码。
    github地址

    相关文章

      网友评论

          本文标题:iOS如何绘制一个波动动画

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