如何在MVC设计中干净地处理顺序动画?

时间:2012-09-04 17:06:28

标签: 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];
                     }];
}

this doesn't actually work correctly之外,从概念上看,它对我来说并不合适。模型中的逻辑应该可以随意移动,而不必等待控制器轻推,告诉它视图已准备好进行更多更新。

我的计划是创建一个待处理动作队列 - 需要动画,每次模型更新需要动画的东西时,只需将其添加到队列中并让它继续进行。然后我可以从队列中取出动作并一次动画一个。

这也意味着我可以在没有任何视图的情况下使用该模型,而无需编写一个单独的控制器,只需在移动对象时不断回调模型。

所以在我开始研究自己的解决方案之前,是否已有代码在Apple的API中处理这个问题?这似乎是一个普遍存在的问题,即有一种标准的处理方法。

或者,是否有更好的方法在运行时处理动画的构建链? (而不是简单地使用完成块对它们进行硬编码。)

0 个答案:

没有答案