无法看到第二个动画从单独的animationDidStop开始

时间:2009-11-19 20:29:50

标签: iphone cocoa-touch core-animation ios-simulator calayer

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

  1. 我从超级图层中删除了图层
  2. 我启动了一个CATransaction来同时为其他2个子图层的位置设置动画 - 这些图层也是显式动画的,并将各个CAKeyframeAnimations添加到相应的图层中。
  3. 然后我重复使用不同内容的第一层,并将其添加回单独位置的超级层(故意不动画)。
  4. 当我运行我的应用程序时,我看到第一个动画发生,然后图层被删除,图层被添加回新位置的新内容,但我从未在步骤2中看到2个图层的动画。有趣的是,我确实为事务中的2层动画中的每一层获得了animationDidStop调用。由于我接到这些调用,似乎动画正在出现,但动画不会出现在屏幕上。我也尝试删除该事务,以防我没有正确设置并看到相同的结果。

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

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

1 个答案:

答案 0 :(得分:0)

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

其次,你应该看一下timing documentation for Core Animation作为你的方式,虽然功能,但可能不是最好的方式。具体来看看这一节:

  

时序协议提供了手段   开始动画一定   持续时间的秒数   使用两个属性:beginTime和   时间偏移。 beginTime指定   进入的秒数   动画应该开始的持续时间   并缩放到时空   动画的图层。 timeOffset   指定一个额外的偏移,但是   在当地活跃时间表示。都   将值组合起来确定   最终的起始偏移。