iOS UIBezierPath画圆求助

1,122 阅读1分钟

工作背景

工作中有一个需求是画圆统计图,这三个圆弧在终点都是圆形的,所以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的,如果有大神知道请在评论给小弟引路🙏