我正在尝试同时为众多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方法,则两个图层都会对位置更改进行动画处理而不会出现问题,除非它们处于固定的持续时间。似乎由于某种原因设置动画明显混淆了事情,但我迷失了为什么。任何帮助将非常感激!感谢。
答案 0 :(得分:1)
问题是你输错了字!
CABasicAnimation *firstAnim = [CABasicAnimation animationWithKeyPath:@"postion"]; change the 'postion' to 'position'
应该是
CABasicAnimation *firstAnim = [CABasicAnimation animationWithKeyPath:@"position"]; change the 'postion' to 'position'
'位置'到位置