2011-10-05 73 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

相關問題