0

我在让 CoreAnimation 在 iPhone 模拟器上连续执行多个动画时遇到了一些问题。我的应用程序中有很多层需要制作动画——这些层都是与我的应用程序中的 UIView 关联的层的子层。在为第一个子层的位置设置动画后(使用显式动画 - CAKeyFrameAnimation),我在 animationDidStop 委托方法中执行以下操作:

  1. 我从其超层中删除该层
  2. 我启动一个 CATransaction 来同时为其他 2 个子图层的位置设置动画 - 这些图层也通过添加到各个图层的单独 CAKeyframeAnimations 显式设置动画。
  3. 然后我重用具有不同内容的第一层并将其添加回超级层的单独位置(故意不动画)。

当我运行我的应用程序时,我看到第一个动画出现,然后层被删除,层被添加回新位置的新内容,但我在第 2 步中从未看到 2 层的动画。有趣的是,我为事务中的 2 个动画层中的每一层获取 animationDidStop 调用。由于我接到这些电话,因此动画似乎正在发生,但动画不会出现在屏幕上。如果我没有正确设置并且看到相同的结果,我还尝试删除事务。

是否可以以这种方式将多个动画链接在一起?

非常感谢任何见解或建议。在此先感谢您的帮助。

4

1 回答 1

0

我的第一个猜测是您正在将 animationDidStop 中的动画添加到不再有效的图层中。当然,除非您发布一些代码,否则我无法知道这一点。

其次,您应该查看Core Animation 的计时文档,因为您这样做的方式虽然实用,但可能不是最好的方式。具体看一下这个部分:

计时协议使用以下两个属性提供了在动画持续一定秒数内启动动画的方法:beginTime 和 timeOffset。beginTime 指定动画应该开始的持续时间的秒数,并缩放到动画层的时间空间。timeOffset 指定了一个额外的偏移量,但在本地活动时间中说明。将两个值结合起来确定最终的起始偏移量。

于 2009-11-20T04:22:07.217 回答