iOS 仪表盘动效

作者: 墙上砖 | 来源:发表于2017-06-09 17:45 被阅读145次

年初做了个类似支付宝仪表盘,
看了很多demo都不太符合要求,就自己动手做了一个。

希望能给个star☺
github地址:github.com/TildaWatts/EzraRoundView.git

中间还是有点坑,不过效果可以。

动效全部使用的CALayer画的,可以节省性能,不用考虑线程。

需求是这样的:双层动效。 外圈底层颜色从由左向右,由红到黄渐变 ,由上到下,透明度逐渐变浅。

IMG_4749.GIF
@property (nonatomic,assign) CGFloat percent;//期望进度
@property (nonatomic, assign) CGFloat maximum;//满进度

其中这个地方可能需要解释一下,这个底色渐变的CAGradientLayer的方法,研究了很久,基本搞清楚了,先看代码

//外圆底色(渐变)
- (CAGradientLayer *)draProgressBottomGradieLayer
{
    
    _progressBottomGradieLayer = [CAGradientLayer layer];
    _progressBottomGradieLayer.frame = self.bounds;
    
    CGFloat width = self.frame.size.width;
    CGFloat height = self.frame.size.height;
    //上
    CAGradientLayer *gradientLayer1 = [CAGradientLayer layer];
    gradientLayer1.frame = CGRectMake(0, 0, width, height);
    gradientLayer1.colors = @[(__bridge id)[UIColor colorWithHexString:@"FF4C4C"].CGColor,
                              (__bridge id)[UIColor colorWithHexString:@"FFB94A"].CGColor];
    gradientLayer1.startPoint = CGPointMake(0, 0);
    gradientLayer1.endPoint = CGPointMake(1, 0);
    
    //左下
    CAGradientLayer *gradientLayer2 = [CAGradientLayer layer];
    gradientLayer2.frame = CGRectMake(0, height/2.0, width/2.0,  height/2.0);
    gradientLayer2.colors = @[(__bridge id)[UIColor colorWithHexString:@"FF4C4C"].CGColor,
                              (__bridge id)[UIColor colorWithHexString:@"FFFFFF" alpha:1].CGColor];
    gradientLayer2.startPoint = CGPointMake(0, 0);
    gradientLayer2.endPoint = CGPointMake(0, 1);
    
    //右下
    CAGradientLayer *gradientLayer3 = [CAGradientLayer layer];
    gradientLayer3.frame = CGRectMake(width/2.0, height/2.0, width/2.0,  height/2.0);
    gradientLayer3.colors = @[(__bridge id)[UIColor colorWithHexString:@"FFB94A"].CGColor,
                              (__bridge id)[UIColor colorWithHexString:@"FFFFFF" alpha:1].CGColor];
    gradientLayer3.startPoint = CGPointMake(0, 0);
    gradientLayer3.endPoint = CGPointMake(0, 1);
    
    [_progressBottomGradieLayer addSublayer:gradientLayer1];
    [_progressBottomGradieLayer addSublayer:gradientLayer2];
    [_progressBottomGradieLayer addSublayer:gradientLayer3];
    [gradientLayer1 setLocations:@[@0.35,@0.75]];
    [gradientLayer3 setLocations:@[@0.2,@0.75]];
    [gradientLayer2 setLocations:@[@0.2,@0.75]];
    
    return _progressBottomGradieLayer;
}
image.png

再看这个示意图,抱歉有点粗糙。
底色是个正方形分成3分 ,1/2 ,1/4,1/4
先确定尺寸 即 CAGradientLayer xxx.frame = CGRectMake(...);

startPoint和endPoint是需要渐变的方向,坐标最大值1即是满值,如图

image.png

确定好了渐变方向,需要确定渐变位置,即渐变位置的百分比
[gradientLayerX setLocations:@[@0.35,@0.75]];

大概就是这样了,如果对您有帮助,希望点下喜欢和star

相关文章

  • iOS 仪表盘动效

    年初做了个类似支付宝仪表盘,看了很多demo都不太符合要求,就自己动手做了一个。 希望能给个star☺github...

  • [iOS] 视频添加动效水印实现介绍

    [iOS] 视频添加动效水印实现介绍 [iOS] 视频添加动效水印实现介绍

  • YoYoBall加载动画

    欢迎同样喜爱动效的你加入iOS动效特攻队–>QQ群:547897182 iOS动效特攻队–>熊熊:64807025...

  • Fade数字切换动效

    欢迎同样喜爱动效的你加入iOS动效特攻队–>QQ群:547897182 iOS动效特攻队–>熊熊:64807025...

  • iOS动效

    1️⃣、对称线画板,自定义线条数和颜色绘制 2️⃣、通过旋转手机查看全图 粒子动画+陀螺仪 3️⃣、非正弦波浪线三...

  • css简单动效

    简单的css3动效 直接上代码 摆钟 景色动效 相册 模拟ios手机相册吸附效果

  • iOS动画详解(学习动画看这一篇就够了)

    动效设计一直是iOS平台的优势,良好的动效设计可以很好地提升用户体验。而动画则是动效的基础支撑。本动画将从易到难逐...

  • DAY 34

    Material design 包含内容丰富,对动效这一块有兴趣,下个月打算学AE,研究动效,这一篇会学习 ios...

  • iOS雪花飘落动效

  • iOS滚珠菜单动效

    原型从网上找的,动效使用了CAAnimation和UIDynamic物理引擎。gitHub 大致步骤如下: 把效果...

网友评论

    本文标题:iOS 仪表盘动效

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