为什么同时显示连续的UIView动画?

时间:2012-09-03 15:18:01

标签: ios animation uiview uikit uiviewanimation

我编写了一些代码,可以按顺序在屏幕上移动一些对象。当每个对象完成移动时,下一个对象开始移动。

代码的结构类似于:

型号:

moveObject
{
    // Code to move the object
    ...

    [delegate moved:self];
}

代表:

moved:(MyClass *)o
{
    UIView* v = [self viewForObject:o];

    [UIView animateWithDuration:1.0
                     animations:^{
                         [v setCenter: [model center]];
                     }
                     completion:^(BOOL finished){
                         // Move object
                         [model moveObject];
                     }];
}

尽管代码似乎运行良好,但屏幕上发生的事情是动画被分组为批量:大量数据全部发生,然后另一组都开始。

如果我在[model moveObject];行上放置一个断点,那么在finished设置为true时会多次点击,而屏幕上不会显示任何动画。然后,偶尔会将finished设置为false,并且在我继续调试之后,所有动画都将在屏幕上执行。

修改

但是,如果我在调用moveObject时偶尔更改代码 not 移动对象,而是在没有操作的情况下返回,并等待用户移动对象,(并因此回调到此代码通过委托的moved:选择器),然后短的动画串顺序发生。

即。问题似乎只发生在代码处于无限循环中时。

出了什么问题?

0 个答案:

没有答案