CABasicAnimation使用静态左侧原点增加宽度

时间:2011-10-02 02:42:04

标签: objective-c ios core-animation

我正在尝试使用Core Animation制作一个简单的动画,以绘制一个增长的简单条形图。就像一个进度条。

因此,条形图从x = 0开始,宽度为0,并且增长到适合框架。

但是,当我为bounds.size.width设置动画时,原点被认为是图层的中心,并且它在两个x方向上向外生长,而我希望它的最左边点始终为0并且用动画改变最远的权利 - 再次像进度条一样。

我是否必须为其他属性设置动画,或者除了bounds.size.width之外还有其他东西我应该用它来实现这个目标吗?

供参考,这是我现在所拥有的:

CABasicAnimation * animation;
animation = [CABasicAnimation animationWithKeyPath:@"bounds.size.width"];
animation.fromValue = [NSNumber numberWithInt:0];
animation.toValue = [NSNumber numberWithInt:(self.frame.size.width / 2)];
[animation setValue:@"primary_on" forKey:@"animation_key"];
animation.duration = duration;
[primaryMask addAnimation:animation forKey:@"primary_on"];

(primaryMask是CALayer)

在这种情况下会发生同样的事情:

animation = [CABasicAnimation animationWithKeyPath:@"bounds"];
CGRect oldBounds = CGRectMake(0, 0, 0, self.frame.size.height);
CGRect newBounds = CGRectMake(0, 0, self.frame.size.width / 2, self.frame.size.height);
animation.fromValue = [NSValue valueWithCGRect:oldBounds];
animation.toValue = [NSValue valueWithCGRect:newBounds];

1 个答案:

答案 0 :(得分:10)

您需要设置

layer.anchorPoint = CGPointZero;

默认情况下,此属性为{0.5,0.5},它是图层的中心。