Ios 为什么连续UIView动画同时显示?
我写了一些代码,可以在屏幕上按顺序移动一些对象。当每个对象完成移动时,下一个对象开始移动 代码的结构与此类似: 型号:Ios 为什么连续UIView动画同时显示?,ios,animation,uiview,uikit,uiviewanimation,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
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时偶尔不移动对象,而是返回而不执行任何操作,并等待用户移动对象(从而通过代理的moved:
选择器调用此代码),则动画的短字符串将按顺序出现
i、 只有当代码处于无限循环中时,问题才会出现
出了什么问题?您的moveObject
方法如何确定要移动的模型?您是否从其他地方调用移动对象?像一个环?无关:你甚至能在不与内部类och Objective C冲突的情况下将一个对象命名为“object”吗?@DavidRönnqvist我已经将代码简化了很多。移动对象从别处调用一次,从动画链开始。(我认为moveObject如何选择它移动的模型并不重要。)