使用CAShapeLayer制作类似UIProgressView的进度条

在使用UIProgressView实现进度条功能时,有些时候并非一定能达到设计的需要。所以我们可以使用CAShapeLayer进行自定义开发类似于进度条的功能。

CAShapeLayer  *progressView = [CAShapeLayer layer];
// 添加到父视图图层
[self.view.layer addSublayer:progressView];
// 设置位置大小
progressView.frame = CGRectMake(0.0, 0.0, weakSelf.frame.size.width, 3.0);


UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:CGPointMake(0, progressView.frame.size.height / 2)];
[path addLineToPoint:CGPointMake(self.view.frame.size.width, progressView.frame.size.height / 2)];
progressView.path = path.CGPath;

// 进度条宽度
progressView.lineWidth = 3.0;
// 进度条颜色
progressView.strokeColor = [UIColor colorWithRed:0.000 green:0.640 blue:1.000 alpha:0.720].CGColor;
// 进度条样式
progressView.lineCap = kCALineCapButt;
// 开始值
progressView.strokeStart = 0;
// 结束值-相当于UIProgressView中的progress
progressView.strokeEnd = 0;


隐藏取消进度条时设置方法
[CATransaction begin];
[CATransaction setDisableActions: YES];
progressView.hidden = YES;
progressView.strokeEnd = 0;
[CATransaction commit];


注意:进度条主要设置 strokeEnd 结束值,其取值范围为0~1。

效果图

使用CAShapeLayer制作类似UIProgressView的进度条_第1张图片




你可能感兴趣的:(iOS,开发编码收集)