我一直在努力学习更多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);
}
}
答案 0 :(得分:4)
根据您的描述,您可以在任何一个地方合法地执行它们,因为动画不依赖于您的应用程序的模型。但是,如果动画依赖于模型中的数据,那么控制器应该执行动画,因为控制器会看到模型数据(但视图没有)。
答案 1 :(得分:1)
ViewController的视图应该是ViewController的minons。您将更容易在ViewController中进行动画数学运算,并让ViewController更新View,这是MVC的最佳实践。
另外,我认为对你来说会更容易,因为你可以根据一个动作制作逻辑,而不是基于一个类。我发现这更容易。