IOS实战 (2) 之 环形渐变色 进度展示条

实现效果图




实现思路


1. 自定义 View

2. 添加 Label

3. 使用 CAShapeLayer 绘制两个同心圆

4. 加动画

核心代码

1.设置 圆形 路径

[UIBezierPath bezierPathWithArcCenter:<(CGPoint)> radius:<(CGFloat)> startAngle:<(CGFloat)> endAngle:<(CGFloat)> clockwise:<(BOOL)>

这个工厂方法用于画弧,参数说明如下:

center: 弧线中心点的坐标

radius: 弧线所在圆的半径

startAngle: 弧线开始的角度值

endAngle: 弧线结束的角度值

clockwise: 是否顺时针画弧线


2.创建 CAshapeLayer(绘制两个同心圆)

```

self.garyCircleLayer = [CAShapeLayer layer];

self.garyCircleLayer.frame = self.bounds;

self.garyCircleLayer.fillColor = [[UIColor            clearColor] CGColor];

//圆形边界颜色

self.garyCircleLayer.strokeColor = [[UIColor  colorWithHex:0xd5e0e2] CGColor] ;

self.garyCircleLayer.opacity = 0.5;

self.garyCircleLayer.lineCap = kCALineCapRound;

self.garyCircleLayer.lineWidth = _grayCircleLineWidth;

self.garyCircleLayer.path = [garypath CGPath];

[self.layer addSublayer:self.garyCircleLayer];

```

3.设置渐变图层

```

self.gradientLayer = [CAGradientLayer layer];

self.gradientLayer.frame = self.bounds;

[self.gradientLayer setColors:[NSArray arrayWithObjects: (id)[[UIColor colorWithHex:0xe2962c] CGColor], (id)[[UIColor colorWithHex:0xf5eb70 ] CGColor],nil]];

[self.gradientLayer setLocations:@[@0.2, @0.5, @0.7, @1]];

[self.gradientLayer setStartPoint:CGPointMake(0, 0)];

[self.gradientLayer setEndPoint:CGPointMake(1, 0)];

[self.gradientLayer setMask:self.progressLayer];

```

4.设置动画

```

// 复原

[CATransaction begin];

[CATransaction setDisableActions:NO];

[CATransaction setAnimationTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]];

[CATransaction setAnimationDuration:0];

self.progressLayer.strokeEnd = 0;

[CATransaction commit];

[CATransaction begin];

[CATransaction setDisableActions:NO];

[CATransaction setAnimationTimingFunction:[CAMediaTimingFunction  functionWithName:kCAMediaTimingFunctionLinear]];

[CATransaction  setAnimationDuration:kAnimationTime];

self.progressLayer.strokeEnd = _percent ;

[CATransaction commit];

```

总结


注意为了适应在 Xib 中创建 的View,需要在 layoutSubview 重新去设置 View 的 Frame.

源码下载


源码下载地址

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

推荐阅读更多精彩内容

  • 我们可以对绘制的Path进行分区。这两个属性的值在0~1之间,0代表Path的开始位置,1代表Path的结束...
    可爱的活火山阅读 4,453评论 0 0
  • 转载:http://www.jianshu.com/p/32fcadd12108 每个UIView有一个伙伴称为l...
    F麦子阅读 11,503评论 0 13
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 10,531评论 5 13
  • Demo效果图: 最近看到一个很不错的有关UI的OC版Demo仿照他的Demo自己写了这个swift版本也是一番了...
    王技术阅读 6,537评论 2 11
  • 我曾一度拒绝看任何青春题材的故事,因为突然某一天醒来,怀疑自己正在迅速老去。所以当新鲜热辣的爱情摆在面前,也唯有淡...
    宋染青阅读 3,885评论 0 2