我正在尝试使用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];
答案 0 :(得分:10)
您需要设置
layer.anchorPoint = CGPointZero;
默认情况下,此属性为{0.5,0.5},它是图层的中心。