循环执行动画

时间:2015-04-01 22:17:30

标签: ios objective-c animation uiview

非常有趣的情况:     NSLog(@"%@",_ matrix);

嗨,我正在制作动画:

NSLog(@"%f %f", item.frame.origin.x, item.frame.origin.y);


[UIView animateWithDuration:0.4 animations:^{
    item.frame = currentItemFrame;
}];
NSLog(@"%f %f", item.frame.origin.x, item.frame.origin.y);

记录结果

2015-04-02 00:56:52.247 Project15[14543:806921] 49.000000 1.000000
2015-04-02 00:56:52.247 Project15[14543:806921] 1.000000 1.000000

所以坐标改变了,但是,我的对象没有动画。 它仅在循环结束时动画,但我需要在每次迭代时绘制。有没有直接的方法呢?

1 个答案:

答案 0 :(得分:1)

您无法在for循环中放置动画。在您将控制权返回到主运行循环之前,动画才会启动,直到您的for循环和事件处理程序中的任何其他代码完成运行后才会发生这种情况。

相反,您需要使用animateWithDuration:animations:completion:方法来提供完成块。动画结束后,系统将运行完成块。在块中,您可以决定再次运行动画,或者执行其他操作,或者根本不执行任何操作。