根据拖动的进度画圆

效果大致是这样


根据拖动的进度画圆_第1张图片
屏幕快照 2017-05-23 上午11.52.57.png

大致思路: 画圆还是得用到drawRect, 因为圆的路径需要实时根据当前拖动的进度而绘制, 所以需要在监听进度的方法里面绘制, 但是我们无法手动调用drawRect方法, 需要通过setNeedsDisplay来让系统帮我们调用drawRect方法,

首先还是先自定义一个view, 即模拟器那个灰色的view, 然后在其.h文件中声明一个CGFloat的变量progressValue, 接收外部传进来的当前进度条的百分数(0到1这个数字), 根据这个数字得出需要画出的圆的角度

- (void)drawRect:(CGRect)rect{

CGContextRef ctx = UIGraphicsGetCurrentContext();
CGPoint center = CGPointMake(rect.size.width / 2, rect.size.height / 2);
CGFloat radius = rect.size.width / 2 - 10;
CGFloat startA = -M_PI_2;//从12点方向开始
CGFloat angle = self.progressValue * M_PI * 2;
CGFloat endA = startA + angle;
UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:startA endAngle:endA clockwise:YES];
//3.把路径添加到上下文当中
CGContextAddPath(ctx, path.CGPath);
//4.把上下文的内容渲染到view的layer上
CGContextStrokePath(ctx);
}

你可能感兴趣的:(根据拖动的进度画圆)