放置处理UI转换和操作的代码的最佳位置在哪里?

时间:2012-06-19 03:19:52

标签: objective-c ios model-view-controller user-interface

我在MainViewController中有以下代码。那是最好的地方吗?我还有其他几种具有类似行为的方法。这种类型的代码是否属于单独的类,仅用于UI转换和操作?

-(void)slideView3P{
    [self.view bringSubviewToFront:_view3P];
    if (view3PIsMinimized){
        view3PIsMinimized = NO;
        [UIView beginAnimations:@"animationOff" context:NULL]; 
        [UIView setAnimationDuration:0.5f];
        [_view3P setFrame:CGRectMake(_view3P.frame.origin.x, 7, _view3P.frame.size.width, 446)];
        [UIView commitAnimations];    
    }
    else {
        view3PIsMinimized = YES;
        [UIView beginAnimations:@"animationOff" context:NULL]; 
        [UIView setAnimationDuration:0.5f];
        [_view3P setFrame:CGRectMake(_view3P.frame.origin.x, 57, _view3P.frame.size.width, 46)];
        [UIView commitAnimations];
    }
}

2 个答案:

答案 0 :(得分:2)

对我来说,我将创建一个名为Helper的模型,并为动画创建类方法,如下所示:

+ (void)slideHoriWithPixel:(CGFloat) _pixel ForView:(UIView *) _view;

+ (void)slideVertWithPixel:(CGFloat) _pixel ForView:(UIView *) _view;

+ (void)popOutAnimationForView:(UIView *) _view; 

会有一些简单而复杂的动画。

好处是:

  • 您永远不知道何时会重复使用这些动画。
  • 即使您执行其他项目,也可以将此帮助程序模型简单地导回到新项目
  • 完成serval项目后,此模型最终可能成为您自己的动画库。

答案 1 :(得分:1)

在我的应用程序中,我通常将转换放在视图控制器中,就像您当前所做的那样。但是,如果要重用转换,可以将它们放在单独的类中,并将其导入到您希望转换的各种视图控制器中。请注意:我不会使用beginAnimations:context:commitAnimations,因为Apple不推荐它们。取自UIView Class Reference:

  

制作动画视图

     

在iOS 4及更高版本中不鼓励使用本节中的方法。改为使用基于块的动画方法。

     

+ beginAnimations:上下文:

     

+ commitAnimations

     

+ setAnimationStartDate:

     

+ setAnimationsEnabled:

     

+ setAnimationDelegate:

     

+ setAnimationWillStartSelector:

     

+ setAnimationDidStopSelector:

     

+ setAnimationDuration:

     

+ setAnimationDelay:

     

等...

希望这有帮助!