gpt4 book ai didi

ios - CAShapeLayer,使用事务设置动画路径

转载 作者:行者123 更新时间:2023-11-29 00:25:45 24 4
gpt4 key购买 nike

我想知道为什么当我尝试使用基本动画为 CAShapeLayerpath 属性设置动画时它可以工作,但当我尝试使用事务来执行此操作时却不起作用。

我已经使用事务成功地为其他 animatable 属性设置了动画。这是我当前的代码:

    CATransaction.begin()
CATransaction.setAnimationDuration(2.0)
path = scalePath() // a scaled version of the original path
CATransaction.commit()

新路径是通过在 CAShapeLayer 的扩展中使用这个(非常硬编码的)函数缩放原始路径获得的:

func scalePath()->CGPath{
var scaleTransform = CGAffineTransform.identity.translatedBy(x: -150, y: -150)
scaleTransform = scaleTransform.scaledBy(x: 10, y: 10)
let newPath = path?.copy(using: &scaleTransform)

return newPath!
}

您能发现任何问题吗?

最佳答案

答案很简单,但有点不令人满意:虽然 path 属性是可动画的,但它不支持隐式动画。这在 the documentation for the path property 的讨论部分被提及。 :

Unlike most animatable properties, path (as with all CGPathRef animatable properties) does not support implicit animation.

显式动画与隐式动画

“显式”动画是通过调用 -addAnimation:forKey:显式添加到图层的动画对象(例如 CABasicAnimation) > 在图层上。

“隐式”动画是由于更改动画属性而隐式发生的动画。

即使属性在事务中发生更改,动画也被认为是隐式的。

关于ios - CAShapeLayer,使用事务设置动画路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43079325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com