炫酷波浪效果动画

炫酷波浪效果动画

GitHub地址

如果喜欢,请给一个小星星。O(∩_∩)O谢谢!

实现思想

主要要根据振幅、偏移、角速度使用贝塞尔曲线来画出整个过程

核心代码

static double i = 0; 

 CGFloat A = 10.f;//A振幅 
 CGFloat k = 0;//y轴偏移 
 CGFloat ω = 0.03;//角速度ω变大,则波形在X轴上收缩(波形变紧密);角速度ω变小,则波形在X轴上延展(波形变稀疏)。不等于0 
 CGFloat φ = 0 + i;//初相,x=0时的相位;反映在坐标系上则为图像的左右移动。 

 //y=Asin(ωx+φ)+k  

 _path = [UIBezierPath bezierPath]; 
 _path2 = [UIBezierPath bezierPath];  

 [_path moveToPoint:CGPointZero]; 
 [_path2 moveToPoint:CGPointZero]; 
 for (int i = 0; i < 376; i ++) { 

  CGFloat x = i; 

  CGFloat y = A * sin(ω*x+φ)+k; 
  CGFloat y2 = A * cos(ω*x+φ)+k; 
  [_path addLineToPoint:CGPointMake(x, y)]; 
  [_path2 addLineToPoint:CGPointMake(x, y2)]; 

 } 
 [_path addLineToPoint:CGPointMake(375, -100)]; 
 [_path addLineToPoint:CGPointMake(0, -100)]; 
 _path.lineWidth = 1; 
 _shapeLayer.path = _path.CGPath;  

 [_path2 addLineToPoint:CGPointMake(375, -100)]; 
 [_path2 addLineToPoint:CGPointMake(0, -100)]; 
 _path2.lineWidth = 1; 

  _shapeLayer2.path = _path2.CGPath; 



 i += 0.1; 

 if (i > M_PI * 2) { 

  i = 0;//防止i越界 

 } 

效果

640.gif
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转眼已经18年底了,在Androd这行已经混了3年,一直说写些东西,总是没有执行。有想法的时候没时间,有时间的时候...
    茫茫前路一行者阅读 4,574评论 0 0
  • 本文主要内容为贝塞尔曲线原理解析并用 SurfaceView 实现其展示动画 关于SurfaceView 的使用,...
    涤生_Woo阅读 14,592评论 5 94
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,191评论 4 61
  • 少有人走的路 Day 12@因心木灬 自律最重要的意义之一,就是认清我们的责任和决策的能力,我们将这一部分心智称为...
    小冷睡了阅读 1,293评论 0 0
  • 昨晚夜班,开会的时候还没什么,干了一两个小时,我就觉得好难受,嗓子疼,头疼,眼睛睁不开了,两腿站不住了,不知道怎么...
    清香百合1124阅读 2,372评论 3 3