iOS开发环形渐变进度条的过程.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

iOS开发环形渐变进度条的过程

前言

进度条相信我们大家都不陌生,往往我们很多时候需要使用到圆形进度条。这篇文章给大家分享了利用iOS如何快速实现环形进度条,下面来一起看看。

一:先制作一个不带颜色渐变的进度条

自定义一个cycleView,在.m中实现drawRect方法

-(void)drawRect:(CGRect)rect{

CGContextRefctx=UIGraphicsGetCurrentContext();//获取上下文

CGPointcenter=CGPointMake(100,100);//设置圆心位置

CGFloatradius=90;//设置半径

CGFloatstartA=-M_PI_2;//圆起点位置

CGFloatendA=-M_PI_2+M_PI*2*_progress;//圆终点位置

UIBezierPath*path=[UIBezierPathbezierPathWithArcCenter:centerradius:radiusstartAngle:startAendAngle:endAclockwise:YES];

CGContextSetLineWidth(ctx,10);//设置线条宽度

[[UIColorblueColor]setStroke];//设置描边颜色

CGContextAddPath(ctx,path.CGPath);//把路径添加到上下文

CGContextStrokePath(ctx);//渲染

}

因为drawRect方法只是在视图刚刚出现的时候执行一次,所以我们需要使用

[selfsetNeedsDisplay];

这个方法来进行重新绘制,

在控制器里面加一个slider,滑动slider来控制进度变化

-(void)drawProgress:(CGFloat)progress

_progress=progress;

[selfsetNeedsDisplay];

}

看一下效果

如果进度条不需要加渐变色,那么这儿几行代码就完成了。

下面来实现一下带有渐变色的进度条,原理很简单,刚刚画的是一条默认是黑色的线条,我们把黑色替换成一条渐变色的线条就可以了。

环形渐变色线条的制作:

第一步

使用CAShapeLayer绘制出渐变层,应为它只能指定两个点之间进行渐变,所以这里需要两个CAShapeLayer,左边一个和右边一个,看一下效果图

代码实现

//生成渐变色

CALayer*gradientLayer=[CALayerlayer];

//左侧渐变色

CAGradientLayer*leftLayer=[CAGradientLayerlayer];

leftLayer.frame=CGRectMake(0,0,self.bounds.size.width/2,self.bounds.size.height);//分段设置渐变色

leftLayer.locations=@[@0.3,@0.9,@1];

leftLayer.colors=@[(id)[UIColoryellowColor].CGColor,(id)[UIColorgreenColor].CGColor];

[gradientLayeraddSublayer:leftLayer];

//右侧渐变色

CAGradientLayer*rightLayer=[CAGradientLayerlayer];

rightLayer.frame=CGRectMake(self.bounds.size.width/2,0,self.bounds.size.width/2,self.bounds.size.height);

rightLayer.locations=@[@0.3,@0.9,@1];

rightLayer.colors=@[(id)[UIColoryellowColor].CGColor,(id)[UIColorredColor].CGColor];

[gradientLayeraddSublayer:rightLayer];

这个渐变层只是一个中间变量,是不能显示出来的,我这里只是演示一下,现在我们已经拿到了渐

文档评论(0)

138****3012 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档