4

我一直在推动自己学习更多 MVCS 风格的编程,并试图更好地组织我的代码。我的主要问题是,我有一个 UIViewController 可以在事件发生时显示一个视图。当视图被创建和视图被销毁时,我想在视图出现和消失时运行一些动画。我可以在我拥有的 UIView 类和 UIViewController 中执行此操作。一旦建立了这些动画,就不需要更改它们。我应该在 UIViewController 或 UIView 中执行此操作以保持 MVC 兼容吗?

该代码目前在我的 UIView 中,如下所示:

- (IBAction)removeView
{
    NSLog(@"Remove");
    if (self.completionBlock != nil) {

        [UIView animateWithDuration:1.0f delay:0 options:UIViewAnimationOptionAllowUserInteraction animations:^{
            self.transform = CGAffineTransformMakeTranslation(self.frame.origin.x, self.frame.origin.y - self.superview.frame.size.height);
            self.alpha = 0; // also fade to transparent
        }completion:^(BOOL finished)
         {
             if (finished) {
                 [self removeFromSuperview];
             }
         }];

        self.completionBlock(YES);

    }
}
4

2 回答 2

4

根据您的描述,您可以在任何一个地方合法地执行它们,因为动画不依赖于您的应用程序的模型。但是,如果动画依赖于模型中的数据,那么控制器应该执行动画,因为控制器可以看到模型数据(但视图没有)。

于 2013-04-13T00:50:52.130 回答
1

ViewController 的 Views 应该是 ViewController 的奴才。您将更轻松地在 ViewController 中进行动画数学运算并让 ViewController 更新 View,这是 MVC 的最佳实践。

另外,我认为这对您来说会更容易,因为您可以基于动作而不是基于类来制作逻辑。我觉得这更容易。

于 2013-04-13T01:43:50.420 回答