1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| #import "ProgressView.h" @interface ProgressView () @property (nonatomic,weak) UILabel *label; @end @implementation ProgressView
- (UILabel *)label { if (_label==nil) { UILabel *label=[[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 100)]; label.textAlignment=NSTextAlignmentCenter; [self addSubview: label]; _label=label; } return _label; } - (void)setProgress:(CGFloat)progress { _progress=progress; self.label.text=[NSString stringWithFormat:@"%.2f%%",progress*100]; [self setNeedsDisplay]; }
// Only override drawRect: if you perform custom drawing. // An empty implementation adversely affects performance during animation. - (void)drawRect:(CGRect)rect { // Drawing code //1.获取上下文 CGContextRef ctx=UIGraphicsGetCurrentContext(); //2.拼接路径 CGPoint center=CGPointMake(50, 50); CGFloat radius=50-2; CGFloat startA=-M_PI_2; CGFloat endA=-M_PI_2+_progress*M_PI*2; UIBezierPath *path=[UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:startA endAngle:endA clockwise:YES]; //3.把路径添加到上下文 CGContextAddPath(ctx, path.CGPath); //4.把上下文渲染到视图 CGContextStrokePath(ctx); } @end
|