iOS 带有渐变色波纹动画

  最近有个朋友的项目里面做了波浪动画效果,刚好我的项目里也有这个需求,就把他的代码拿来改了,主要是实现了颜色渐变的效果。
  Github
  CocoaChina


  废话不多话,说一下实现过程:
  1、波纹动画主要依赖于CAShapeLayer的绘制,使用帧动画实现;需要使用多个CAShapeLayer通过y值变换组成(这里我只是用了2个CAShapeLayer)。
  2、渐变色由CAGradientLayer完成。

- (void)changeFirstWaveLayerPath {
    CGMutablePathRef path = CGPathCreateMutable();
    CGFloat y = _wavePointY;
    
    CGPathMoveToPoint(path, nil, 0, y);
    for (float x = 0.0f; x <= _waveWidth; x ++) {
        y = _waveAmplitude * 1.6 * sin((250 / _waveWidth) * (x * M_PI / 180) - _waveOffsetX * M_PI / 270) + _wavePointY;
        CGPathAddLineToPoint(path, nil, x, y);
    }
    
    CGPathAddLineToPoint(path, nil, _waveWidth, 0);
    CGPathAddLineToPoint(path, nil, 0, 0);
    CGPathCloseSubpath(path);
    
    _shapeLayer1.path = path;
    CGPathRelease(path);
}

- (void)changeSecondWaveLayerPath {
    CGMutablePathRef path = CGPathCreateMutable();
    CGFloat y = _wavePointY;
    CGPathMoveToPoint(path, nil, 0, y);
    for (float x = 0.0f; x <= _waveWidth; x ++) {
        
        y = _waveAmplitude * 1.6 * sin((250 / _waveWidth) * (x * M_PI / 180) - _waveOffsetX * M_PI / 180) + _wavePointY;
        CGPathAddLineToPoint(path, nil, x, y);
    }
    
    CGPathAddLineToPoint(path, nil, _waveWidth, 0);
    CGPathAddLineToPoint(path, nil, 0, 0);
    CGPathCloseSubpath(path);
    
    _shapeLayer2.path = path;
    
    CGPathRelease(path);
}

  调用:

_waveOffsetX += _waveSpeed;
[self changeFirstWaveLayerPath];
[self changeSecondWaveLayerPath];
   
[self.layer addSublayer:self.gradientLayer1];
self.gradientLayer1.mask = _shapeLayer1;
   
[self.layer addSublayer:self.gradientLayer2];
self.gradientLayer2.mask = _shapeLayer2;

  如果需要纯色背景的话 可以删除CAGradientLayer,给View和CAShapeLayer设置背景色;或者2个Color颜色值给相同的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,577评论 4 61
  • 五年来,云霜上班后的第一件事和下班前最后一件事,都是洗手两次。先用净化水冲洗,然后再用免洗消毒净手液反复搓洗,下班...
    暗羽流云阅读 3,418评论 0 0
  • 操作当前view A和B app:layout_constraintStart_toStartOf="B" A和...
    漯河龙阅读 2,755评论 0 0

友情链接更多精彩内容