When first displaying a bar chart using Core Plot, I'd like the bars to grow upward until they reach their correct heights.
How would you create such an animation using this framework?
When first displaying a bar chart using Core Plot, I'd like the bars to grow upward until they reach their correct heights.
How would you create such an animation using this framework?
This is what I did:
In my viewDidLoad controller's method I created the CPTXYGraph:
graph = [[CPTXYGraph alloc] initWithFrame:self.view.bounds];
I added animation to the empty graph:
CAKeyframeAnimation *scale = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
Then in animationDidStop delegate's method I added the plot data and animation to the graph:
CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"transform.scale.y"];
[anim setDuration:2.0f];
anim.toValue = [NSNumber numberWithFloat:1.0f];
anim.fromValue = [NSNumber numberWithFloat:0.0f];
anim.removedOnCompletion = NO;
anim.delegate = self;
anim.fillMode = kCAFillModeForwards;
gPlot.anchorPoint = CGPointMake(0.0, 0.0);
[gPlot addAnimation:anim forKey:@"grow"];
[graph addPlot:gPlot ];// IMPORTANT here I added the plot data to the graph :) .
Add animation for your CPTBarPlot as follows:
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform"];
[animation setDuration:1];
CATransform3D transform = CATransform3DMakeScale(1, 0.0001, 1);
// offsetY=[PlotDisplayAreaUnderXAxisHeight]-[PlotDisplayAreaHeight]/2
transform = CATransform3DConcat(transform, CATransform3DMakeTranslation(0, offsetY, 0));
animation.fromValue = [NSValue valueWithCATransform3D:transform];
animation.toValue = [NSValue valueWithCATransform3D:CATransform3DIdentity];
[barPlot addAnimation:animation forKey:@"barGrowth"];
Thanks Michele for your great answer.
I have uploaded an example from her answer to Github for those who would want to download the demo and start working right away!
https://github.com/mayuur/CoreplotAnimation
Enjoy Coding!!!
This is very similar to: How to animate the pie charts developed using core-plot library?
Add opacity animation like this...
CABasicAnimation *fadeInAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];
fadeInAnimation.duration = 1.0f;
fadeInAnimation.removedOnCompletion = NO;
fadeInAnimation.fillMode = kCAFillModeForwards;
fadeInAnimation.toValue = [NSNumber numberWithFloat:1.0];
[xSquaredPlot addAnimation:fadeInAnimation forKey:@"animateOpacity"];
© 2022 - 2024 — McMap. All rights reserved.