美文网首页
波浪动画效果

波浪动画效果

作者: iOS小卒 | 来源:发表于2017-01-16 14:43 被阅读0次

项目中有时会用到波浪效果,效果如下:

就是这种效果

具体代码如下:1.首先要创建个时间控制器,波浪一直处于动态,所以必须要有个定时器方法如下:

红框内是将定时器加入到RunLoop中,这样定时器工作不收其他影响,最后开启定时器

接着在定时器方法里写移动效果,这有这样才会让人觉得波浪再动!代码如下:

这个是定时器每次执行该方法,距离偏移0.5,当距离大于2倍屏宽时,归零,红框就是刷新试图

下面就是开始绘制两条波浪线。要在:- (void)drawRect:(CGRect)rect方法里创建,iOS系统里有个CGContextRef类,是专门用来绘图,里面有很多方法。只介绍水波纹的。具体方法:

- (void)drawRect:(CGRect)rect {

CGContextRef context = UIGraphicsGetCurrentContext(); // 路径

// 创建路径

CGMutablePathRef path = CGPathCreateMutable();

// 画水波纹

CGContextSetLineWidth(context, 1); // 水波纹宽

UIColor *color = [UIColor colorWithColorString:@"#000000" alpha:0.15];

//    UIColor *color = [UIColor clearColor];

CGContextSetFillColorWithColor(context, [color CGColor]);// 背景色

// 设置波峰高度

float y = (1 - self.present) * rect.size.height;

float y1 = (1 - self.present) * rect.size.height;

CGPathMoveToPoint(path, NULL, 0, y);

for (float x = 0; x <= rect.size.width * 3.0; x++) {

// 构造正弦函数

y = sin(x / (rect.size.width / 5) * M_PI  + _fa / (rect.size.width / 5) * M_PI) * _bigNumber + (1 - self.present) * rect.size.height;

CGPathAddLineToPoint(path, nil, x, y);

}

// 对正弦函数进行波长波谷约束

CGPathAddLineToPoint(path, nil, rect.size.width, rect.size.height);

CGPathAddLineToPoint(path, nil, 0, rect.size.height);

CGContextAddPath(context, path);

CGContextFillPath(context);

CGContextDrawPath(context, kCGPathStroke);

CGPathRelease(path);

CGMutablePathRef path1 = CGPathCreateMutable();

// 画第二条线

CGContextSetLineWidth(context, 1);

//    UIColor *color1 = [UIColor clearColor];

UIColor *color1 = [UIColor colorWithColorString:@"#000000" alpha:0.20];

CGContextSetFillColorWithColor(context, [color1 CGColor]);

CGPathMoveToPoint(path1, NULL, 0, y1);

for (float x = 0; x <= rect.size.width; x++) {

y1 = sin(x / (rect.size.width / 5) * M_PI + _fa / (rect.size.width / 5) * M_PI + M_PI) *_bigNumber + (1 - self.present) * rect.size.height;

CGPathAddLineToPoint(path1, nil, x, y1);

}

CGPathAddLineToPoint(path1, nil, rect.size.height, rect.size.width);

CGPathAddLineToPoint(path1, nil, 0, rect.size.height);

CGContextAddPath(context, path1);

CGContextFillPath(context);

CGContextDrawPath(context, kCGPathStroke);

CGPathRelease(path1);

}

最后一步就是给一个波浪幅度值,并起吊定时器。

具体代码地址:https://github.com/likelk/WaterRippleAnimation.git

相关文章

  • 波浪动画效果

    项目中有时会用到波浪效果,效果如下: 具体代码如下:1.首先要创建个时间控制器,波浪一直处于动态,所以必须要有个定...

  • 炫酷波浪效果动画

    炫酷波浪效果动画 GitHub地址 如果喜欢,请给一个小星星。O(∩_∩)O谢谢! 实现思想 主要要根据振幅、偏移...

  • iOS 双曲线波浪动画

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

  • SwiftUI 动画教程之实现波浪文字效果Wave Animat

    实战需求 SwiftUI 动画教程之实现波浪文字效果Wave AnimatableModifier 本文价值与收获...

  • iOS 圆形水波浪效果实现

    水波浪效果如下 最近项目中用到一个小的波浪动画,查阅了一些资料如下:网上参考的一些效果CDNS上的原理 主要实现方...

  • 波浪动画

    前言: 在多次地方我看到一个非常好看的线条动画-波浪。给人很舒服的赶脚,并且也很实用在项目中,比如:下载文件进度,...

  • Flutter书写简单动画(写轮眼/波浪球/雨滴/等待)

    FlutterAnimationDemo 学习flutter书写的几个简单动画效果 写轮眼 波浪进度球(奇奇怪怪的...

  • WaveView 自定义波浪效果动画

    参数 Wate Level(水位) 波浪静止时水面距离底部的高度 Amplitude(振幅) 波浪垂直振动时偏离水...

  • [每天进步一点点~] uni-app css 制作雷达扫描、波浪

    雷达扫描效果(背景换成纯色渐变了): 波浪移动动画效果 第一种: 第二种(有待改进,后续再补)

  • 波浪效果

    在工程中碰到了需要实现波浪动画。只知道是使用正弦函数和余弦函数,CADisplayLink来实现。 正弦,余弦函数...

网友评论

      本文标题:波浪动画效果

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