drawRect圆圈内部用于显示进度

时间:2013-10-14 06:32:46

标签: iphone ios geometry progress drawrect

我正试图通过让圆圈填满其中的另一个圆圈来显示进度。有人可以帮我实现吗?我可能会以错误的方式解决这个问题。 这是我的代码:

- (void)drawRect:(CGRect)rect
{
    rect = CGRectMake(0, 400, 500, 500);
    [[UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 500, 500) cornerRadius:50.0] addClip];


    CGContextRef contextRef = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(contextRef, 2.0);
    CGContextSetRGBFillColor(contextRef, 111/255.0f, 116/255.0f, 128/255.0f, 1.0);
    CGRect circlePoint = (CGRectMake(0, 0, rect.size.width, rect.size.height));
    CGContextFillEllipseInRect(contextRef, circlePoint);

    CGContextBeginPath(contextRef);

    float c = 20; //Number that should cause the green progress to increase and decrease
    CGContextAddArc(contextRef, 250, 250, 250, 0, M_PI, 0);
    CGContextClosePath(contextRef); // could be omitted
    UIColor *color = [UIColor greenColor];
    CGContextSetFillColorWithColor(contextRef, color.CGColor);
    CGContextFillPath(contextRef);
}

以下是截至目前的截图。我基本上希望能够使用我的float c;变量来控制绿色内部的进度。

我尝试过使用CGContextAddArc,但是随着“c”增加,我无法增长到圆圈的大小,当我减少“c”的值时,我也无法增长;

c

1 个答案:

答案 0 :(得分:1)

用你的c来说明从何处去哪里

// draw the pie part
CGContextMoveToPoint(_viewContext, centerX, centerY);
CGContextAddArc(_viewContext, centerX, centerY, pieRadius, radians(startDegrees), radians(endDegrees), 0);
CGContextClosePath(_viewContext);
CGContextFillPath(_viewContext);
  • startDegrees = 0
  • endDegress = c
  • _viewContext = contextRef
  • centerX / CenterY =边界中心
  • PieRadius =您想要的半径:D,以像素为单位IIRC

将deg转换为rad

#define pi 3.14159265
double radians(double percentage)
{
    return (percentage/100)*360 * (pi/180);
}