我在CALayer的隐式动画代码中缺少什么?

时间:2010-10-13 21:06:48

标签: iphone core-animation calayer

我正试图从书中获取以下代码。它激活了名为Chicken的UIImageView层:

[CATransaction setValue:kCAMediaTimingFunctionEaseInEaseOut forKey:kCATransactionAnimationTimingFunction];
[CATransaction setValue:[NSNumber numberWithFloat:1.0] forKey:kCATransactionAnimationDuration];
theChicken.position = CGPointMake(225, 144);

问题是此代码没有动画。它只是将鸡肉移动到225,144而根本没有动画(它只是传送到魔法那里)。任何人都可以帮我纠正这些代码吗?

提前致谢,

马丁

1 个答案:

答案 0 :(得分:1)

如果将其包装成会发生什么:

[CATransaction begin];

[CATransaction setValue:kCAMediaTimingFunctionEaseInEaseOut forKey:kCATransactionAnimationTimingFunction];
[CATransaction setAnimationDuration:1.0];
theChicken.position = CGPointMake(225, 144);

[CATransaction commit];

如果它仍然不起作用,则可能与图层委托有关。这个图层是子图层吗?我认为委托在根层上设置为nil会产生这种影响。

您可以改为使用UIView动画:

[UIView beginAnimations:@"anim1" context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];

theChicken.position = CGPointMake(225, 144);

[UIView commitAnimations];