作品鏈接:http://www.lxweimin.com/users/1e0f5e6f73f6/top_articles
- 1.自定義一個UIView的子類
// 提供一個成員屬性,接收下載進度值
@property (nonatomic, assign) CGFloat progress;
- 2.重寫成員屬性的progress的setter
// 改變成員屬性progress的屬性的值,就會調用它的setter
-(void)setProgress:(CGFloat)progress{
_progress = progress;
// 當下載進度改變時,就會調用重繪方法
[self setNeedsDisplay];
}
- 3.重寫
-(void)drawRect:(CGRect)rect
{
// 設置圓弧的半徑
CGFloat radius = rect.size.width * 0.5;
// 設置圓弧的圓心
CGPoint center = CGPointMake(radius, radius);
//設置圓弧的開始的角度
CGFloat startAngle = - M_PI_2;
// 設置圓弧的終止角度
CGFloat endAngle = - M_PI_2 + 2 * M_PI * self.progress;
//使用 UIBezierPath類繪制圓弧
UIBezierPath *path =[UIBezierPathbezierPathWithArcCenter:centerradius:radius - 2 startAngle:startAngle endAngle:endAngleclockwise:YES];
//將繪制的圓弧渲染到圖層(即顯示出來)
[path stroke];
}