UIViewController应该控制UIView的动画吗?

时间:2013-04-13 00:40:21

标签: ios objective-c model-view-controller animation uiview

我一直在努力学习更多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);

    }
}

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

ViewController的视图应该是ViewController的minons。您将更容易在ViewController中进行动画数学运算,并让ViewController更新View,这是MVC的最佳实践。

另外,我认为对你来说会更容易,因为你可以根据一个动作制作逻辑,而不是基于一个类。我发现这更容易。