当我尝试设置animation.fillMode = kCAFillModeForwards
时,Xcode无法编译并显示错误。 “ 使用未解析的标识符'kCAFillModeForwards'” 。
我已经在以前的项目中使用了它,没有任何问题,有人已经遇到这种行为了吗?
func animateGradient() {
currentGradient += 1
let animation = CABasicAnimation(keyPath: Animation.keyPath)
animation.duration = animationDuration
animation.toValue = currentGradientSet()
animation.fillMode = kCAFillModeForwards
animation.isRemovedOnCompletion = false
animation.delegate = self
gradient.add(animation, forKey: Animation.key)
}
答案 0 :(得分:7)
已删除该常量,以支持CAMediaTimingFillMode
类型的forwards
属性。从Swift 4.2开始,相同的内容写为:
animation.fillMode = .forwards
也就是说,前向填充模式与在完成动画时不删除动画的组合经常被误用,试图使动画“变粘” /“保留”。除非您要为移除图层设置动画效果,否则,更干净的解决方案是将图层更新为新值,并添加动画(完成后将其移除)以从先前的值过渡。