setDuration仅在动画多个CALayer时影响一个CALayer

时间:2014-06-25 04:00:48

标签: ios core-animation calayer

我正在尝试同时为众多CALayers改变位置。隐式动画似乎工作正常,但如果我尝试为每个CALayer的持续时间属性显式指定一个值,则只有一个动画而另一个动画成功更改但没有任何动画。这是我正在使用的代码:

CGPoint initialPt = CGPointMake(160.0, 10);
CGPoint pt2 = CGPointMake(160.0, 185.0);
CGPoint pt3 = CGPointMake(160.0, 270.0);

CABasicAnimation *firstAnim = [CABasicAnimation animationWithKeyPath:@"postion"];
[firstAnim setFromValue:[NSValue valueWithCGPoint:initialPt]];
[firstAnim setToValue:[NSValue valueWithCGPoint:pt2]];
[firstAnim setDuration:1.0];
[layer1 setPosition:p2];
[layer1 addAnimation:firstAnim forKey:@"Slide"];

CABasicAnimation *secondAnim = [CABasicAnimation animationWithKeyPath:@"position"];
[secondAnim setFromValue:[NSValue valueWithCGPoint:initialPt]];
[secondAnim setToValue:[NSValue valueWithCGPoint:pt3]];
[secondAnim setDuration:1.0];
[layer2 setPosition:p3];
[layer2 addAnimation:secondAnim forKey:@"Slide2"];

我已经尝试过使用CATransaction但没有改变。如果我注释掉setDuration方法,则两个图层都会对位置更改进行动画处理而不会出现问题,除非它们处于固定的持续时间。似乎由于某种原因设置动画明显混淆了事情,但我迷失了为什么。任何帮助将非常感激!感谢。

1 个答案:

答案 0 :(得分:1)

问题是你输错了字!

CABasicAnimation *firstAnim = [CABasicAnimation animationWithKeyPath:@"postion"]; change the 'postion' to 'position'

应该是

CABasicAnimation *firstAnim = [CABasicAnimation animationWithKeyPath:@"position"]; change the 'postion' to 'position'

'位置'到位置