Iphone 如何在每次迭代时循环动画并进行一些更改?

Iphone 如何在每次迭代时循环动画并进行一些更改?,iphone,loops,core-animation,Iphone,Loops,Core Animation,我希望我的动画循环并逐渐减速。我认为在这种情况下不可能使用repeats属性,因为动画必须在每次迭代结束时减慢速度。我的计划很简单: 1在for循环体外部创建并初始化动画 2创建一个for循环。在此循环体中,设置动画的持续时间属性。并开始动画将其添加到我的视图中,这是显式动画 3等待持续时间并继续执行循环 我使用usleep函数等待动画完成。在下一个循环迭代中,将添加相同的动画,并更改其持续时间属性以增加动画的速度。下面是代码所有初始化动画的代码都在上面,无需进行以下修改即可正常工作: for

我希望我的动画循环并逐渐减速。我认为在这种情况下不可能使用repeats属性,因为动画必须在每次迭代结束时减慢速度。我的计划很简单:

1在for循环体外部创建并初始化动画

2创建一个for循环。在此循环体中,设置动画的持续时间属性。并开始动画将其添加到我的视图中,这是显式动画

3等待持续时间并继续执行循环

我使用usleep函数等待动画完成。在下一个循环迭代中,将添加相同的动画,并更改其持续时间属性以增加动画的速度。下面是代码所有初始化动画的代码都在上面,无需进行以下修改即可正常工作:

for (int i=1; i<10; i++) {
        // Find the duration (I simplified this part it depends on i value).
        keyframeAnim.duration = ...;
        // Add an animation.
        [self addAnimation:keyframeAnim forKey:@"loopingLongAnimation"];
        // Wait till it stops.
        usleep(keyframeAnim.duration);
    }
问题是这不能正常工作。它只播放一次示例动画并停止。看起来我错过了一些对核心动画非常重要的东西。是否有更合适的解决方案?我可以使用计时曲线来影响整个循环动画而不仅仅是它的示例部分吗


提前感谢。

不渲染任何内容,因为渲染需要泵送运行循环。看看我对你的回答

我认为在这种情况下,您可能可以在每个动画上设置一个延迟,相当于上一个动画的延迟+持续时间,因此动画在时间线上首尾相连

但是,最好只是通过启动下一个较慢的动画来连接一个动画代理,该代理响应“动画确实停止”消息

这两种方法都使动画循环异步运行,以便运行循环可以正常执行