#import <UIKit/UIKit.h> @interface CircleProgressView : UIView /**进度值*/ @property(nonatomic,assign) CGFloat progressValue; @end #import "CircleProgressView.h" @implementation CircleProgressView @synthesize progressValue = _progressValue; - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { self.backgroundColor = [UIColor clearColor]; } return self; } - (void)setProgressValue:(CGFloat)progressValue { _progressValue = progressValue; [self setNeedsDisplay]; } - (CGFloat)progressValue { return _progressValue; } - (void)drawRect:(CGRect)rect { CGContextRef contextRef = UIGraphicsGetCurrentContext(); CGFloat radius = rect.size.width/2; /**绘制一个灰色背景的圆形*/ CGContextAddArc(contextRef, radius, radius, radius, 0, 3.141596253*2, 0); CGContextSetRGBFillColor(contextRef, 0.7, 0.7, 0.7, 1); CGContextFillPath(contextRef); /**绘制一个动态圆形*/ CGContextAddArc(contextRef, radius, radius, radius, 0, 3.14 * _progressValue * 2, 0); CGContextAddLineToPoint(contextRef, radius, radius); CGContextSetRGBFillColor(contextRef, 0, 0, 1, 1); CGContextFillPath(contextRef); } @end #import "ViewController.h" #import "CircleProgressView.h" @interface ViewController () { CircleProgressView *_vCircleProgress; NSTimer *_timer; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; _vCircleProgress = [[CircleProgressView alloc]initWithFrame:CGRectMake(0,0, 100, 100)]; _vCircleProgress.center = self.view.center; [self.view addSubview:_vCircleProgress]; _timer=[NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(changeProgressValue) userInfo:nil repeats:YES]; } - (void)changeProgressValue { CGFloat value = arc4random()%100/100.f; _vCircleProgress.progressValue = value; } @end