如何在iPhone-OS中链接动画?

时间:2009-05-12 18:30:41

标签: iphone cocoa-touch uikit core-animation

我想做一些复杂的动画。但我只知道如何动画一系列变化。有没有办法链接动画,以便我可以例如进行更改A - > B - > C - > D - > E - > F(依此类推),而核心动画等待每个动画完成后再进入下一个动画?

特别是,我想这样做:我有一个显示立方体的UIImageView。

阶段1)立方体在地板上是平的

阶段2)立方体稍微向左旋转,而旋转原点在左下角。

阶段3)立方体稍微向右旋转,而旋转原点位于右下角。

这些阶段重复10次,并在阶段1停止。而且,随着时间的推移,摆动变得越来越小。

我知道如何为一个块中的一个更改设置动画,但是我怎么能用这些重复的东西做一些复杂的代码呢?随着时间的推移,这不是一回事。它会发生变化,因为摆动变得越来越小,直到停止为止。

3 个答案:

答案 0 :(得分:4)

假设你正在使用UIView动画...

您可以提供动画“已停止”方法,该方法在动画实际完成时被调用(请查看setAnimationDelegate)。因此,您可以将一系列动画排队等待准备好。设置委托然后启动第一个动画。当它结束时,它会调用setAnimationDidStopSelector方法(确保检查finished标志以确保它已经完成并且不仅仅是暂停)。您还可以传递动画上下文,该上下文可能是动画队列中的索引。它也可以是包含计数器的数据结构,因此您可以在每个循环中调整动画值。

那么这只是等待一个人完成然后开始下一个从队列中取出的问题。

如果您正在使用其他类型的动画,则适用相同的方法。您只需设置数据结构,以便在每个数据结构结束后知道该怎么做。

答案 1 :(得分:1)

您需要在动画块内设置动画委托。有关所有详细信息,请参阅UIView文档中的setAnimationDelegate。

实际上,只要动画结束,您的代表就会得到通知。使用context参数确定动画中当前结束的步骤(阶段1,阶段2等)

此策略应该允许您将任意数量的动画块链接在一起。

答案 2 :(得分:0)

我认为你的问题的答案是你需要对你想做的事情有更多的规范。你清楚地有一个想法,但更多的细节规范将帮助你回答你自己的问题。