2017-01-23 46 views
1

我使用實現倒裝卡時鐘動畫的UI組件工作。所有工作都很好,但是當我將頂部CALayer內容更改爲新圖像時,舊圖像在更改之前保持可見。它會造成混亂效應。爲了更好地解釋我放在GIF動畫波紋管:在動畫完成前更改CALayer內容

enter image description here

這是改變一個CALayer的內容代碼:

firstTopLayer.contents = secondTopLayer.contents 
let bottomAnim = CABasicAnimation(keyPath: "transform") 
bottomAnim.duration = animDuration/2 
bottomAnim.repeatCount = 1 
bottomAnim.fromValue = NSValue.init(caTransform3D: 
CATransform3DMakeRotation((CGFloat)(M_PI_2), 1, 0, 0)) 
bottomAnim.toValue = NSValue.init(caTransform3D: 
CATransform3DMakeRotation(0, 1, 0, 0)) 
bottomAnim.isRemovedOnCompletion = true 
bottomAnim.timingFunction = CAMediaTimingFunction.init(name: kCAMediaTimingFunctionEaseIn) 
firstBottomLayer.add(bottomAnim, forKey: "bottom") 
firstBottomLayer.contents = self.bufferContents 

欲瞭解更多信息,我把一個鏈接到repository

回答

1

我找到了解決方案。頂級動畫必須具備此配置

topAnim.fillMode = kCAFillModeForwards 
topAnim.isRemovedOnCompletion = false 

以及每次啓動此動畫之後。

firstTopLayer.removeAnimation(forKey: kTopAnimaton) 

根據該結構的頂層保持在它最後一幀動畫位置