2011-09-29 127 views
1

我正在嘗試爲iPad應用程序製作自定義動畫條形圖(即,條形高度在激活時會增加設置級別)。我對iOS開發很陌生,我只想獲得關於如何處理這個任務的反饋。在iOS中創建動畫進度條

我想玩this條目的答案,我想知道從這一點開始是否正確。

回答

0

IDK的有關鏈接,但你可以從這裏http://preloaders.net/產生他們,應該給你一個良好的基礎,使自己的

+0

謝謝,但我真的需要像做一個圖示器(設定最大值,設置欄的高度,當你激活,它會慢慢地進步,直到達到指定的值),可重複使用。所以創建一個自定義預加載器實際上不會。 – Kee

3

如果你只是想要一個堅實的酒吧,你可以創建大小和位置的一個UIView您需要設置其背景顏色並將其添加到您的視圖中。這是體面的編碼,使用UIView繪製實心矩形並不丟臉。 :]

對於更復雜的圖形,可能需要創建UIView的自定義子類並覆蓋其drawRect消息以執行一些自定義繪圖。例如:

- (void)drawRect:(CGRect)rect 
{ 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetLineWidth(context, 4.0); 
    CGContextSetRGBStrokeColor(context, 1.0, 1.0, 0, 1.0); // opaque yellow 
    CGContextMoveToPoint(context, x1, y1); // for suitable definition of x1,y1, etc 
    CGContextAddLineToPoint(context, x2, y2); 
    CGContextStrokePath(context); 
} 

或任何其他您可能想要做的CGContext *繪圖(例如餅圖,折線圖等)。

動畫您通過添加一個UIView與背景顏色創建一個酒吧,堅持以下每當動畫開始:

timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(onTimer:) userInfo:nil repeats:YES]; 
self.startTime = [NSDate date]; 

,然後添加以下信息(注:條形將增長向上)。

- (void) onTimer:(NSTimer*)firedTimer 
{ 
    float time = [self.startTime timeIntervalSinceNow] * -1; 
    if (time>kMaxTime) 
    { 
    [timer invalidate]; 
    timer = nil; 
    time = kMaxTime; 
    } 
    int size = time * kPixelsPerSecond; 
    myBar.frame = CGRectMake(x, y - size, width, size); 
} 
+0

謝謝!首先嚐試一下。 – Kee

+0

酒吧向上移動(像一條蛇),而不是長大。可能是什麼問題呢? – Kee

+0

聽起來像你正在改變y,但不是大小。仔細檢查一切的座標,以確保你告訴iOS繪製一個更高的酒吧。 – AndrewS