2017-01-23 45 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) 

根据该结构的顶层保持在它最后一帧动画位置