How do I animate the appearance of a bar chart in Core Plot?

前端 未结 5 2249
一生所求
一生所求 2021-02-10 06:49

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 usi

相关标签:
5条回答
  • 2021-02-10 06:52

    This is very similar to: How to animate the pie charts developed using core-plot library?

    0 讨论(0)
  • 2021-02-10 06:55

    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"];
    
    0 讨论(0)
  • 2021-02-10 06:55

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

    0 讨论(0)
  • 2021-02-10 06:56

    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"];
    
    0 讨论(0)
  • 2021-02-10 07:04

    This is what I did:

    1. In my viewDidLoad controller's method I created the CPTXYGraph:

      graph = [[CPTXYGraph alloc] initWithFrame:self.view.bounds];
      
    2. I added animation to the empty graph:

      CAKeyframeAnimation *scale = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
      
    3. 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 :) .
      
    0 讨论(0)
提交回复
热议问题