2013-04-13 76 views
3

我一直在推動自己學習更多MVCS風格的編程,並試圖更好地組織我的代碼。我的主要問題是,我有一個UIViewController,當事件發生時調出一個視圖。當視圖被創建並且視圖被銷燬時,我想在視圖上運行一些動畫並且消失。我可以在UIView類和UIViewController中做到這一點。一旦這些動畫已經建立,他們不需要改變。我應該在UIViewController或UIView中做到這一點,以保持MVC兼容?UIViewController應該控制UIView的動畫嗎?

的代碼是目前在我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); 

    } 
} 

回答

3

根據您的描述,你可以合法地做他們在任何地方,因爲動畫不依賴於應用程序的模型。但是,如果動畫依賴於模型中的數據,則控制器應該執行動畫,因爲控制器會看到模型數據(但視圖不會)。

1

ViewController的視圖應該是ViewController的minons。您將有更容易的時間在ViewController中進行動畫數學運算,並讓ViewController更新視圖,根據MVC,這是最佳做法。

另外,我認爲這對你更容易,因爲你可以根據一個動作而不是基於一個類來創建邏輯。我覺得更容易。