美文网首页iOS Developer
iOS 简单的双层波浪动画

iOS 简单的双层波浪动画

作者: zhengtao | 来源:发表于2017-05-22 17:46 被阅读0次
效果图
具体实现

1、通过CADisplayLink 改变 CAShapeLayer.path 绘制三角函数曲线实现 y=Asin(ωx+φ)+h

y = 9sin(Pi/40*x ) + 9

部分代码

        let w = CGFloat((Double.pi) / Double(wavelength))
        let path = UIBezierPath()
        path.move(to: CGPoint.init(x: 0, y:bounds.height))
        for i in 0..<Int(bounds.width) {
            let x = CGFloat(i)
            let  y = A * sin(w * CGFloat(i) + offsetX) + offsetY
            path.addLine(to: CGPoint.init(x: x, y: y))
        }
        path.addLine(to: CGPoint.init(x: bounds.width, y:bounds.height))
        path.close()
        waveShape.path = path.cgPath

2、同理再加入另一条波浪,填充颜色与之前波浪相同,颜色不透明度为50%

 waveShape.fillColor = waveColor.cgColor
 otherWaveShape.fillColor = waveColor.withAlphaComponent(0.5).cgColor

3、 为使波浪有一定的过渡效果加入一个渐变遮罩
创建一个 CAGradientLayer 并设置为 mask

private var gradientLayer: CAGradientLayer = {
        let layer = CAGradientLayer()
        layer.colors = [UIColor.white.cgColor, UIColor.clear.cgColor];
        layer.startPoint = CGPoint.init(x: 0.5, y: 0.8)
        layer.endPoint = CGPoint.init(x: 0.5, y: 0)
        return layer
    }()

self.waveShape.mask = self.gradientLayer;

4、使波浪动画开始和结束有一定的淡入淡出效果
使三角函数 振幅 A 随着二次函数变化
y = 10 - (x - √10)^2 //振幅 A 周期公式 x∈(0,2*√10);

振幅变化函数
private var x:CGFloat = 0; //振幅变化变量  x∈(0,2 * √amplitude)

 A = amplitude - pow((x - sqrt(amplitude)), 2)

经过上面的几步基本实现上面的效果

已经封装好使用起来非常方便
// @IBOutlet weak var waveView: WaveView!
 
        //颜色
//        waveView.waveColor = UIColor.blue
        //动画时间2s
        waveView.speed = 2
        //浪高
        waveView.amplitude = 8
        //波长
        waveView.wavelength = 320
        //持续动画
    // waveView.alwaysAnimation = true
开始动画
waveView.startWave()
Demo已经上传GitHub传送门

相关文章

  • iOS 简单的双层波浪动画

    具体实现 1、通过CADisplayLink 改变 CAShapeLayer.path 绘制三角函数曲线实现 y=...

  • ios - 波浪动画

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

  • 简单的波浪动画

    还原x游行程助手的首页侧边栏按钮波浪抖动效果 新建一个工程 在storyboard中拉5个button,分别设置t...

  • iOS那些简单的动画

    iOS那些简单的动画 iOS那些简单的动画

  • 第三方资源收集

    水波浪圆形进度控件,采用 CAShapeLayer,CADisplayLink 波浪动画,简单,流畅https:/...

  • iOS超简单创建波浪动画和进度动画

    第一次接触波浪效果来自于拉钩的个人详情页,觉得它的效果不错,便自己使用Objective-C实现了一下,先看拉钩的...

  • 【iOS】波浪动画实现

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

  • iOS 开发核心动画Core Animation(附demo)

    最近在研究iOS动画,iOS中添加动画的方法:UIView的简单动画,layer的隐式动画,还有Core Anim...

  • iOS双波浪动画解析

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

  • iOS 双曲线波浪动画

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

网友评论

    本文标题:iOS 简单的双层波浪动画

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