我编写了一些代码,可以按顺序在屏幕上移动一些对象。当每个对象完成移动时,下一个对象开始移动。
代码的结构类似于:
型号:
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];
}];
}
除this doesn't actually work correctly之外,从概念上看,它对我来说并不合适。模型中的逻辑应该可以随意移动,而不必等待控制器轻推,告诉它视图已准备好进行更多更新。
我的计划是创建一个待处理动作队列 - 需要动画,每次模型更新需要动画的东西时,只需将其添加到队列中并让它继续进行。然后我可以从队列中取出动作并一次动画一个。
这也意味着我可以在没有任何视图的情况下使用该模型,而无需编写一个单独的控制器,只需在移动对象时不断回调模型。
所以在我开始研究自己的解决方案之前,是否已有代码在Apple的API中处理这个问题?这似乎是一个普遍存在的问题,即有一种标准的处理方法。
或者,是否有更好的方法在运行时处理动画的构建链? (而不是简单地使用完成块对它们进行硬编码。)