代码之家  ›  专栏  ›  技术社区  ›  Julien W.

使用未解析的标识符“kcafillmodeforwards”

  •  2
  • Julien W.  · 技术社区  · 6 年前

    当我试图设置 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)
    }
    
    1 回复  |  直到 6 年前
        1
  •  8
  •   David Rönnqvist    6 年前

    这个常数已经被去掉了,取而代之的是 forwards 上的属性 CAMediaTimingFillMode 键入。从SWIFT 4.2开始,同样的内容被写成:

    animation.fillMode = .forwards
    

    也就是说,前向填充模式和在动画完成时不移除动画的组合经常被错误地用于试图使动画“粘住”或“保持”。除非正在设置移除层的动画,否则更干净的解决方案是将层更新为新值,并添加一个动画,该动画将在完成从上一个值转换时移除。