美文网首页iOS专题
【iOS】波浪动画实现

【iOS】波浪动画实现

作者: 焚雪残阳 | 来源:发表于2018-01-13 18:19 被阅读0次

最近项目中用到了一个波浪动画,于是我又重新复习了一遍正弦函数,并简单地封装了一个自定义视图。下面为大家介绍封装自定义视图的过程。

正弦曲线

要想实现波浪动画,我们首先需要绘制出一条正弦曲线。所以第一步需要重写自定义视图的drawRect方法,在drawRect方法里绘制正弦曲线。正弦曲线的公式为:y=Asin(ωx+φ)+k,A为振幅,ω为角速度,φ为初相,k为偏距。

我们可以在0 <= x <= self.bounds.size.width的范围内取x的有限个值,并根据公式y=Asin(ωx+φ)+k算出y的值,来获取正弦曲线上的有限个点,并连接各个点,形成正弦曲线。因此这里我们利用CGPathCreateMutable创建了一条可变路径,并依次连接上述各点,形成了一条正弦曲线。代码如下:

- (void)drawRect:(CGRect)rect
{
    CGContextRef cxt = UIGraphicsGetCurrentContext();
    //初始化运动路径
    CGMutablePathRef path = CGPathCreateMutable();
    //设置起始位置
    CGPathMoveToPoint(path, nil, 0, self.bounds.size.height);
    //正弦曲线公式为:y=Asin(ωx+φ)+k;
    for (CGFloat x = 0.0f; x <= self.bounds.size.width; x++) {
        CGFloat y = self.alpha * sinf(self.omega * x + self.phi) + self.kappa;
        CGPathAddLineToPoint(path, nil, x, y);
    }
    CGPathAddLineToPoint(path, nil, self.bounds.size.width, self.bounds.size.height);
    CGPathCloseSubpath(path);
    //绘制曲线
    CGContextSetFillColorWithColor(cxt, [UIColor orangeColor].CGColor);
    CGContextSetLineWidth(cxt, 0.5);
    CGContextAddPath(cxt, path);
    CGContextFillPath(cxt);
    CGPathRelease(path);
    
}

波浪效果

正弦曲线画好之后,第二步就是让曲线动起来,形成波浪的效果。所以我们需要创建定时器,让曲线不停地向左或向右移动起来。想移动波形向左或者向右,那么应该是先化为这个形式的式子y=Asin[ω(x+φ/ω)],如果想向右移动m角度,就变为y=Asin[ω(x+φ/ω-m)],反之,向左移动的话变为y=Asin[ω(x+φ/ω+m)]。这里我们采取向右移动,因此每次都要在原来初相的基础上减去ω*m,代码如下:

- (void)handleDisplay
{
    if (!self.isHidden) {
        self.phi -= self.speed * self.omega;
        [self setNeedsDisplay];
    }
}

总结
以上为封装自定义视图的整体思路,希望可以帮到大家,需要下载Demo的可以前往我的github:Github地址

相关文章

  • 【iOS】波浪动画实现

    最近项目中用到了一个波浪动画,于是我又重新复习了一遍正弦函数,并简单地封装了一个自定义视图。下面为大家介绍封装自定...

  • iOS实现波浪效果

    iOS实现波浪效果

  • ios - 波浪动画

    来源:http://summertreee.github.io/blog/2016/08/07/dong-hua-...

  • iOS-CADisplayLink& CAShapeLa

    使用CADisplayLink& CAShapeLayer&UIBezierPath实现波浪动画 1、CADisp...

  • css实现充电式loading加载动画

    1.实现效果 2.实现原理 div+伪元素实现外边框样式渐变+伪元素实现内部波浪动画,实现在一定时间内,内部波浪高...

  • ios 电商demo(实现各种常见动画效果和页面布局)

    ios 电商demo(实现各种常见动画效果和页面布局) ios 电商demo(实现各种常见动画效果和页面布局)

  • iOS Animation创建及使用

    iOS 实现的基本动画 头尾式动画 2.block动画的方法 iOS显示关键帧动画 关键帧动画 动画的创建和使用 ...

  • iOS双波浪动画解析

    场景需求分析,如图 1.自定义View 2.利用CADisplayLink定时器,每秒60次刷新界面 3.在Vie...

  • iOS 双曲线波浪动画

    今天来搞一下 双曲线波浪动画,那么什么是双曲线波浪呢 看效果 一,效果就是这样子 ,通过调整百分比 可以实现...

  • iOS实现波浪效果

    这篇文章主要为大家详细介绍了iOS实现波浪效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分...

网友评论

    本文标题:【iOS】波浪动画实现

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