在动画完成前更改CALayer内容
问题描述:
我使用实现倒装卡时钟动画的UI组件工作。所有工作都很好,但是当我将顶部CALayer内容更改为新图像时,旧图像在更改之前保持可见。它会造成混乱效应。为了更好地解释我放在GIF动画波纹管:在动画完成前更改CALayer内容
这是改变一个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
答
我找到了解决方案。*动画必须具备此配置
topAnim.fillMode = kCAFillModeForwards
topAnim.isRemovedOnCompletion = false
以及每次启动此动画之后。
firstTopLayer.removeAnimation(forKey: kTopAnimaton)
根据该结构的顶层保持在它最后一帧动画位置