我要做的是创建一个自定义进度条,使用石英绘图,我所做的是以下内容,
- (void)drawRect:(CGRect)rect {
// Drawing code.
CGContextRef context = UIGraphicsGetCurrentContext();
CGRect currentBounds = self.bounds;
CGContextSetLineWidth(context, 20.0f);
CGContextSetStrokeColorWithColor(context, [ProgressBarView redColor]);
CGContextBeginPath(context);
CGContextMoveToPoint(context, CGRectGetMinX(currentBounds), CGRectGetMidY(currentBounds));
CGContextAddLineToPoint(context, CGRectGetMaxX(currentBounds) * time, CGRectGetMidY(currentBounds));
CGContextClosePath(context);
CGContextDrawPath(context, kCGPathStroke);
}
在CGContextAddLineToPoint中,我乘以maxX倍时间,该时间是每秒使用此函数计算的。
- (void)pushTime {
if (time >= 1.0) {
time = 0.0;
} else {
time = time += 0.1;
}
[self setNeedsDisplay];
}
它第一次工作得很好,但是进度条永远不会回到起点,我已经尝试将起始值更改为0以外,这样石英可以创建路径而没有问题,但是没有做到这一点。
无论如何,谢谢你的帮助。
答案 0 :(得分:1)
由于某些原因,您的视图似乎无法清除以前绘制的内容 - 您可以通过在重绘自身之前明确强制视图清除来解决此问题:
- (void)drawRect:(CGRect)rect {
// Drawing code.
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClearRect(context, rect);
...
虽然我预计应该自动完成清算(并且调整clearsContextBeforeDrawing属性的值不会产生任何影响......)