0

我的 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];
    }
}
4

2 回答 2

2

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

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

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

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

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

好处是:

  • 你永远不知道什么时候会重用这些动画。
  • 即使你做另一个项目,你也可以简单地将这个 Helper Model 导入到新项目中
  • 在你完成了多个项目之后,这个模型最终可能会成为你自己的动画库。
于 2012-06-19T03:59:54.190 回答
1

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

动画视图

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

+开始动画:上下文:

+提交动画

+setAnimationStartDate:

+setAnimationsEnabled:

+setAnimationDelegate:

+setAnimationWillStartSelector:

+setAnimationDidStopSelector:

+setAnimationDuration:

+setAnimationDelay:

ETC...

希望这可以帮助!

于 2012-06-19T03:30:10.267 回答