2011-10-05 41 views
0

我在CATransaction中设置了一些CALayer变换和边界修改。但是,无论我使用的方法(键值,setAnimationDuration)是否没有动画,所做的更改都会完成,但不会立即转换。 你知道为什么吗? 谢谢!CATransaction持续时间不起作用

/* CALayer*layer=[CALayer layer]; 
     layer.bounds =AnUIImageView.bounds; 
     layer.contents=AnUIImageView.layer.contents; 
     [AnotherUIImageView.layer addSublayer:layer]; 

     CGPoint thecentre=AnUIImageView.center; 

     CALayer* layerInTarget=[AnotherUIImageView.layer.sublayers lastObject]; 
     [layerInTarget setPosition:[self.view convertPoint:thecentre toView:AnotherUIImageView]]; 
     AnUIImageView.layer.hidden=YES; 

*///上述工程的代码,我表现(如,他们通过view.layer访问),它是结束与一个UIView相关

 [CATransaction begin]; 
     [CATransaction setValue:[NSNumber numberWithFloat:2.0f] 
         forKey:kCATransactionAnimationDuration]; 
     layerInTarget.position=[self.view convertPoint:AnotherUIImageView.center toView:AnotherUIImageView]; 
     layerInTarget.transform=CATransform3DMakeScale(0.6,0.6,0.6); 
     [CATransaction commit]; 

回答

7

CALayer■不要无论您如何配置您的CATransaction,都参与隐式动画。您需要使用显式动画(使用CAAnimation的适当子类),或者您需要使用UIView动画。

+0

好的,我没有意识到它。不过,我改变了我以前的代码,并使用隐式动画修改了图层,然后将其添加到我的UIImageView中。没有任何改变:图层被修改,但立即。今天糟糕的一天,是不是... – NightCoder

+0

好吧,最后它确实工作,我也被这个问题帮助:[这里](http://stackoverflow.com/questions/2981676/catransaction-layer-changes-但此结果不是,动画) – NightCoder

相关问题