【问题标题】:CABasicAnimation CorePlot scale in effectCABasicAnimation CorePlot 缩放效果
【发布时间】:2012-07-12 14:44:49
【问题描述】:

我正在尝试在核心图散点图(如折线图)中进行缩放,以便将其缩放以查看。 CorePlot 使用普通的 CALayer 来实现它的绘图。

我使用Core动画如下实现:

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"affineTransform"];
animation.duration = 10;
animation.removedOnCompletion = YES;
animation.fillMode = kCAFillModeForwards;
CGAffineTransform start = CGAffineTransformMakeScale(1, 0.1);
CGAffineTransform end = CGAffineTransformMakeScale(1, 1);
animation.fromValue = [NSValue valueWithCGAffineTransform:start];
animation.toValue = [NSValue valueWithCGAffineTransform:end];

[plot addAnimation:animation forKey:@"animation"];

问题是这似乎不起作用。这是我第一次使用核心动画,所以我认为我做错了什么?

编辑 好的,所以我发现我使用了错误的密钥路径。

我现在可以让它动画,但它看起来很奇怪:

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.scale.y"];
...
animation.fromValue = [NSNumber numberWithFloat:0.1];
animation.toValue = [NSNumber numberWithFloat:1];

我想做的是让动画“向上缩放”,这样它就可以伸展到位。现在它有点从中心长出来,这不是我想要的。知道如何实现吗?

【问题讨论】:

  • 运行时会发生什么?
  • 什么也没发生。好像没有动画一样。我刚刚注意到 CALayer 上的 'affineTransform' 成员是方法而不是属性,我猜关键路径需要是属性?

标签: iphone objective-c ios core-animation core-plot


【解决方案1】:

变换相对于图层的anchorPoint。您可以通过将锚点设置为 (0.5, 1,0) 将锚点更改为位于底部。请注意,图层也相对于锚点进行绘制,因此当您更改它时,它可能会更改其在屏幕上的位置。要将其定位在应有的位置,您可以在更改锚点后设置框架或将位置设置为底部(它应该从哪里缩放)。

【讨论】:

  • 那种作品,但正如你所说,它确实改变了绘图的位置。您所说的“将位置设置到底部(应该从哪里缩放)”是什么意思?
  • 位置通常在中心,但是当您更改锚点时会发生变化。如果您的锚点是 (0.5, 1.0) 那么这是您视图的下中心点。如果您知道较低的中心点应该在哪里,那么您可以设置 position 属性。否则,您可以设置框架,它会根据您的锚点计算适当的位置
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
相关资源
最近更新 更多