2010-10-13 58 views
0

我正试图从书上得到下面的代码来工作。它动画一个UIImageView层叫鸡:我从CALerer的这个隐式动画代码中遗漏了什么?

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

的问题是,这个代码不动画。它只是将鸡移动到225,144而没有动画(它只是传送像魔术一样)。任何人都可以帮助我纠正代码,所以它的作品?

由于提前,

马丁

回答

1

,如果你把它包在发生什么:

[CATransaction begin]; 

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

[CATransaction commit]; 

如果它仍然不工作,它可能是与层的委托做的。这个图层是一个子图层吗?我认为委托人在根层上设置为零,这会产生这种影响。

您可以使用一个UIView动画代替:

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

theChicken.position = CGPointMake(225, 144); 

[UIView commitAnimations]; 
+0

它仍然扭曲那边像魔术:( – GuybrushThreepwood 2010-10-13 21:13:40

+0

我认为这是一个子层这是我与界面生成器创建的UIImage的看法? – GuybrushThreepwood 2010-10-13 21:14:08

+0

然后它只是意见的主层,你应该使用UIView动画,而不是我上面编辑的 – Ben 2010-10-13 21:15:56