1

我想知道如何在动画期间的任何时间点获得扩张圈动画的直径(或半径)。我也会在获得大小后立即停止动画,但我认为我无法停止并将其从图层中移除,直到获得圆圈的大小。

有关如何实现扩展圆圈动画的示例,它是iPhone Quartz2D 渲染扩展圆圈addGrowingCircleAtPoint:(CGPoint)point问题答案中方法中显示的实现的变体。

我试图检查图层、动画等的各种值,但似乎找不到任何东西。我认为更糟糕的情况是,我可以尝试通过将当前时间放入其动画中来做出最佳猜测,并根据其往返大小状态使用它来确定它“应该”在哪里。这似乎有点矫枉过正,因为我认为这是一个在我可以轻松获得的地方增加的值。

更新:

我已经在表示层上尝试了几个属性,包括似乎永远不会改变的变换,所有值总是相同的,无论检查时圆圈的大小如何。

4

2 回答 2

2

好的,这就是您如何在动画制作时获取动画的当前状态。

当罗布很接近时,他遗漏了两条关键信息。

首先从 layer.presentationLayer.subLayers 你必须得到你正在制作动画的图层,对我来说这是唯一可用的子图层。

其次,从这个子层你不能直接访问转换,你必须通过 valueForKeyPath 来获取 transform.scale.x。我使用 x 是因为它是一个圆圈,并且 x 和 y 是相同的。

然后,我使用它根据用于创建 Arc 的值来计算圆的大小。

于 2011-04-14T03:57:26.780 回答
-1

我假设你想要得到的是 current CATransform3D,并且从那里,你可以得到你的圈子大小。

你想要的是layer.presentationLayer.transform. 有关演示层的详细信息,请参阅CALayer文档。另请参阅核心动画渲染架构

于 2011-04-13T03:44:46.570 回答