我是核心动画的新手,我正在尝试根据新数据将strokeEnd
a 的CAShapeLayer
,从旧值更新为新的更新值。
所以基本上我有一个绘制的CAShapeLayer
,并更新它UIBezierPath
,并使用,通过这样做来CABasicAnimation(forKey: "strokeEnd")
为新的动画:strokeEnd
layerAnimation = CABasicAnimation(keyPath: "strokeEnd")
layerAnimation.toValue = 1
shapeLayer.strokeEnd = 1
layerAnimation.duration = 0.4
shapeLayer.add(layerAnimation, forKey: animation.identifier)
Run Code Online (Sandbox Code Playgroud)
其中animation.identifier
是String Enum
确定应使用哪个动画的值。
到目前为止,我一直在深入研究苹果的核心动画文档,以及堆栈溢出,以寻找可能的线索,但到目前为止没有任何运气。
据我了解,通过仅在动画中分配一个值,核心动画本身就会找出路径,但到目前为止还没有运气。我还尝试计算新旧顶部 Y 值之间的差异,并使用byValue
, 和不带fromValue
or toValue
。
绘制了更新的路径,但不幸的是更新时没有显示动画strokeEnd
。
任何帮助、提示或建议,我们将不胜感激。
干杯!
根据 @matt 的反馈进行编辑以添加更多详细信息:TLDR;更新路径,我想我应该用 toValue 来制作动画。
我正在存储一个包含CAShapeLayer
在UIBezierPath
. 该路径是根据可以是三个不同值的数据确定的,并且应该从 (x: i, y: 0) -> (x: i, y: n) 开始。其中 x 是固定位置,y 是给定 array[i] 列中路径的终点。
如果第 …