设计一个进度条

  1. 自定义一个UIView的子类
//提供一个成员属性,接收下载进度值
 @property (nonatomic, assign) CGFloat progress;
  1. 重写成员属性progress的setter
//每次改变成员属性progress的值,就会调用它的setter
 - (void)setProgress:(CGFloat)progress
 {
   _progress = progress;
   //当下载进度改变时,手动调用重绘方法
   [self setNeedsDisplay];
 }
  1. 重写(核心)
 - (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 = [UIBezierPath bezierPathWithArcCenter:center radius:radius - 5 startAngle:startAngle endAngle:endAngle clockwise:YES];
   //将绘制的圆弧渲染到图层上(即显示出来)
   [path stroke];
 }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容