2011-09-29 120 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