如何获得饼图进度条

时间:2012-02-08 22:25:13

标签: iphone ios progress-bar

我喜欢Xcode中的小饼形进度条,当在项目中搜索字符串时(Shift-Command-F),请参见图片。

如何在iOS上调用它?我很乐意将它用于下载队列。

提前致谢。

Screenshot of Xcode searching for a string in a projekt

5 个答案:

答案 0 :(得分:6)

没有股票循环确定性进展视图。以下是您可能用来实现此类事情的示例drawRect:

- (void)drawRect:(CGRect)rect
{
    CGFloat circleRadius = (self.bounds.size.width / 2) - (self.strokeWidth * 2);
    CGPoint circleCenter = CGPointMake(CGRectGetMidX(rect), CGRectGetMidY(rect));
    CGRect circleRect = CGRectMake(circleCenter.x - circleRadius, circleCenter.y - circleRadius, 2 * circleRadius, 2 * circleRadius);

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSaveGState(context);

    // Draw stroked circle to delineate circle shape.

    CGContextSetStrokeColorWithColor(context, self.fillColor.CGColor);
    CGContextSetLineWidth(context, self.strokeWidth);
    CGContextAddEllipseInRect(context, circleRect);
    CGContextStrokePath(context);

    // Draw filled wedge (clockwise from 12 o'clock) to indicate progress

    self.progress = MIN(MAX(0.0, self.progress), 1.0);

    CGFloat startAngle = -M_PI_2;
    CGFloat endAngle = startAngle + (progress * 2 * M_PI);

    CGContextSetFillColorWithColor(context, self.fillColor.CGColor);
    CGContextMoveToPoint(context, circleCenter.x, circleCenter.x);
    CGContextAddLineToPoint(context, CGRectGetMidX(circleRect), CGRectGetMinY(circleRect));
    CGContextAddArc(context, circleCenter.x, circleCenter.y, circleRadius, startAngle, endAngle, NO);
    CGContextClosePath(context);
    CGContextFillPath(context);

    CGContextRestoreGState(context);
}

您需要创建strokeWidthfillColor属性才能直接使用此代码,但它应该是一个开始。 Here's a sample project with a couple of examples.

答案 1 :(得分:3)

也许您可以使用MBProgressHUD中的代码,这样的馅饼会更大一些。

答案 2 :(得分:3)

我不相信他们在iOS上发布了这样的UIProgressView,但你可以自己创建它。要将文章放在文本视图的右侧,请使用rightView属性(不要忘记设置rightViewMode)。

您可以为此创建自定义UIView(我怀疑它是否值得尝试子类UIProgressView)。我可能会用drawRect手绘它,而不是试图使用图像或类似的东西。应该更容易以这种方式填写正确的百分比。

答案 3 :(得分:2)

可以使用SSPieProgressView

答案 4 :(得分:1)

试试这个:LSPieProgressView

它是一个UIView类别,可以显示任何UIView的饼图进度。

代码示例:

#import "UIView+LSPieProgress.h"

- (void)updateProgress
{
    [self.button setProgress:self.progress];
}