2011-03-10 76 views
1

什麼,我試圖做的是創建一個自定義進度條,石英圖紙,我要做的就是以下,石英繪圖古怪

- (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

什麼「時間」是? INT?浮球?一個NSNumber ...?你在哪裏調用pushTime?通過NSTimer? – meronix 2011-03-10 07:20:19

回答

1

看來你的觀點並沒有出於某種原因清除以前繪製的內容 - 您可以修復,明確強制視圖重繪本身之前清除:

- (void)drawRect:(CGRect)rect { 
    // Drawing code. 

    CGContextRef context = UIGraphicsGetCurrentContext(); 

    CGContextClearRect(context, rect); 
    ... 

雖然我預計結算應該自動完成(和調整clearsContextBeforeDrawing屬性的值不會產生任何效果......)