如何为子层内容设置动画?

How to animate sublayer contents?

我有一个图层,想为该图层创建一个动画,它会更新其中一个子图层的内容。 CAAnimation keyPath 有一个符号,比如 sublayers.layerName.propertyName 来更新子层的一些值,但似乎它不适用于 .contents 属性.

    func rightStepAfter(_ t: Double) -> CAAnimation {
        let rightStep = CAKeyframeAnimation(keyPath: "sublayers.right.contents")
        rightStep.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut)
        rightStep.keyTimes = [0, 1]
        rightStep.values = [UIImage(named:"leftfoot")!.cgImage!, UIImage(named:"rightfoot")!.cgImage!]
        rightStep.beginTime = t
        rightStep.duration = stepDuration
        rightStep.fillMode = .forwards
        return rightStep
    }
    func leftStepAfter(_ t: Double) -> CAAnimation {
        let leftStep = CAKeyframeAnimation(keyPath: "sublayers.left.opacity")
        leftStep.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut)
        leftStep.keyTimes = [0, 1]
        leftStep.values = [0, 1]
        leftStep.beginTime = t
        leftStep.duration = stepDuration
        leftStep.fillMode = .forwards
        return leftStep
    }

此处 leftStepAfter 创建正确的动画,更新子层的不透明度,rightStepAfter 不更新子层的 contents。如果从 keyPath 中删除 sublayers.right. - 动画将正确更改 CURRENT 层的内容。 Project to check it and the original project.

为什么我的动画不工作以及如何解决?

没有找到我最初问题的答案(通过键路径),但通过为每个子层创建多个动画解决了我的问题。