工作背景
工作中有一个需求是画圆统计图,这三个圆弧在终点都是圆形的,所以lineCapStyle 设置为 kCGLineCapSquare,但是在实际开发中,其中一个圆弧会被覆盖一部分,导致图层的显示错误。
代码
// 精选
self.normalAmount = 3000;
// 活动
self.activityAmount = 3000;
// 特权
self.newbieAmount = 30000;
复制代码
// 精选圈
UIBezierPath * normalPath = [UIBezierPath bezierPathWithArcCenter:CGPointMake(radius, radius)
radius:88
startAngle:startPoint
endAngle:startPoint + normalArc
clockwise:YES];
[normalPath setLineWidth:15];
[[UIColor colorWithRed:55/255.0f green:187/255.0f blue:255/255.0f alpha:1] setStroke];
// 终点类型
/*
kCGLineCapButt,
kCGLineCapRound,
kCGLineCapSquare
*/
normalPath.lineCapStyle = kCGLineCapRound;
[normalPath stroke];
// 活动标
UIBezierPath * activityPath = [UIBezierPath bezierPathWithArcCenter:CGPointMake(radius, radius)
radius:88
startAngle:startPoint + normalArc
endAngle:startPoint + normalArc + activityArc
clockwise:YES];
[activityPath setLineWidth:15];
[[UIColor colorWithRed:47/255.0f green:210/255.0f blue:205/255.0f alpha:1] setStroke];
// 终点类型
activityPath.lineCapStyle = kCGLineCapRound;
[activityPath stroke];
// 特权标
UIBezierPath * newbiePath = [UIBezierPath bezierPathWithArcCenter:CGPointMake(radius, radius)
radius:88
startAngle:startPoint + normalArc + activityArc
endAngle:startPoint + normalArc + activityArc + newbieArc
clockwise:YES];
[newbiePath setLineWidth:15];
[[UIColor colorWithRed:255/255.0f green:184/255.0f blue:83/255.0f alpha:1] setStroke];
// 终点类型
newbiePath.lineCapStyle = kCGLineCapRound;
[newbiePath stroke];
复制代码
lineCapStyle 类型为 kCGLineCapRound 时的显示:
lineCapStyle 类型为 kCGLineCapButt 时的显示:
求助
在github 上找了一些类似的demo,只有显示一段弧为圆形的。没有像这样是3段,终点类型都是kCGLineCapRound的,如果有大神知道请在评论给小弟引路?