adit
adit

Reputation: 33654

creating a bar with core animation

So I am trying to create an animated bar graph using apple core animation. The bar is just basically a rectangular figure, which have a value of 0-100%. When it first appears I wanted it to show an animation going from 0 to x %. How can I draw a rectangular form like this?

UPDATE: Most probably I will have a bar as an image, so I need to animate this image to a certain height...

Upvotes: 0

Views: 658

Answers (2)

Daniel G. Wilson
Daniel G. Wilson

Reputation: 15055

This should do exactly what you want:

- (UIImageView*)createNewBarWithValue:(float)percent atLocation:(CGPoint)location
{
    UIImageView *newBar = [[[UIImageView alloc] initWithFrame:CGRectMake(location.x, location.y, 50, 200)] autorelease];
    newBar.image = [UIImage imageNamed:@"bar.png"];

    CABasicAnimation *scaleToValue = [CABasicAnimation animationWithKeyPath:@"transform.scale.y"];
    scaleToValue.toValue = [NSNumber numberWithFloat:percent];
    scaleToValue.fromValue = [NSNumber numberWithFloat:0];
    scaleToValue.duration = 1.0f;
    scaleToValue.delegate = self;

    newBar.layer.anchorPoint = CGPointMake(0.5, 1);

    [newBar.layer addAnimation:scaleToValue forKey:@"scaleUp"];
    CGAffineTransform scaleTo = CGAffineTransformMakeScale( 1.0f, percent );
    newBar.transform = scaleTo;

    return newBar;
}

Upvotes: 0

picciano
picciano

Reputation: 22701

If your requirements are really that simple, you could create a view, set its background color and adjust (or animate) its frame.width (or height) as needed.

Of course there are more elaborate ways to do this, but no need to over-engineer for a simple problem.

Upvotes: 3

Related Questions