Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在MVC设计中干净地处理顺序动画?_Ios_Animation_Uiview_Uikit_Uiviewanimation - Fatal编程技术网

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

Ios 如何在MVC设计中干净地处理顺序动画?,ios,animation,uiview,uikit,uiviewanimation,Ios,Animation,Uiview,Uikit,Uiviewanimation,我写了一些代码,可以在屏幕上按顺序移动一些对象。当每个对象完成移动时,下一个对象开始移动 代码的结构与此类似: 型号: moveObject { // Code to move the object ... [delegate moved:self]; } 代表(控制员): 除了这一事实之外,它在我看来在概念上并不正确。模型中的逻辑应该可以自由地进行移动,而不必等待控制器提示视图准备好进行更多更新 我的计划是创建一个需要动画的挂起操作队列,每次模型更新需要动画的内容时

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

代码的结构与此类似:

型号:

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

    [delegate moved:self];
}
代表(控制员):

除了这一事实之外,它在我看来在概念上并不正确。模型中的逻辑应该可以自由地进行移动,而不必等待控制器提示视图准备好进行更多更新

我的计划是创建一个需要动画的挂起操作队列,每次模型更新需要动画的内容时,只需将其添加到队列中并让其继续。然后我可以从队列中取出动作,一次一个地设置动画

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

所以,在我开始为这个问题开发自己的解决方案之前,苹果的API中是否已经有了处理这个问题的代码?似乎这将是一个足够普遍的问题,有一个标准的方法来处理它


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

我的印象是,您的视图控制器应该注意这一点。它应该知道哪些属性需要设置动画以及动画的外观。也许可以使用KVO观察相关的模型更改。关于队列,我没有任何评论:)你可以看看我和邓肯对它们的回答,它们是链接动画的两种不同方式,使它们顺序排列。这两个都是很好的答案。@DavidRönnqvist谢谢,你的答案正是我打算做的事情。我要试一试。
moved:(MyClass *)o
{
    UIView* v = [self viewForObject:o];

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