【问题标题】:Should a UIViewController control a UIView's animations?UIViewController 是否应该控制 UIView 动画?
【发布时间】:2013-04-05 15:55:10
【问题描述】:

我一直在推动自己学习更多 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);

    }
}

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-10
        • 1970-01-01
        • 1970-01-01
        • 2012-09-29
        • 2018-05-24
        • 2012-02-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多