UIView 的各种动画效果

    技术2022-05-19  27

    最普通动画:

    //开始动画

    [UIView beginAnimations:nil context:nil];  

    //设定动画持续时间

    [UIView setAnimationDuration:2];

    //动画的内容

    frame.origin.x += 150;

    [img setFrame:frame];

    //动画结束

    [UIView commitAnimations];

     

    连续动画:一个接一个地显示一系列的图像

    NSArray *myImages = [NSArray arrayWithObjects: 

    [UIImage imageNamed:@"myImage1.png"], 

    [UIImage imageNamed:@"myImage2.png"], 

    [UIImage imageNamed:@"myImage3.png"], 

    [UIImage imageNamed:@"myImage4.gif"], nil];

     

    UIImageView *myAnimatedView = [UIImageView alloc]; 

    [myAnimatedView initWithFrame:[self bounds]]; 

    myAnimatedView.animationImages = myImages; //animationImages属性返回一个存放动画图片的数组

    myAnimatedView.animationDuration = 0.25; //浏览整个图片一次所用的时间

    myAnimatedView.animationRepeatCount = 0; // 0 = loops forever 动画重复次数

    [myAnimatedView startAnimating]; 

    [self addSubview:myAnimatedView]; 

    [myAnimatedView release]; 

     

    CATransition Public API动画:

    CATransition *animation = [ CATransition animation ];

    //动画时间

        animation.duration = 0.5f ;

    //先慢后快

        animation. timingFunction = UIViewAnimationCurveEaseInOut;

      animation. fillMode = kCAFillModeForwards;

      //animation.removedOnCompletion = NO;

     

    //各种动画效果

      /*

    kCATransitionFade;

    kCATransitionMoveIn;

    kCATransitionPush;z

    kCATransitionReveal;

    */

      /*

    kCATransitionFromRight;

    kCATransitionFromLeft;

    kCATransitionFromTop;

    kCATransitionFromBottom;

    */

    //各种组合

    animation. type = kCATransitionPush;

    animation. subtype = kCATransitionFromRight;  

     

    [self .view .layer addAnimation :animation forKey :@"animation" ];

     

    CATransition Private API动画:

    animation.type可以设定为以下效果

    动画效果汇总:

    /*

     suckEffect(三角)

     

     rippleEffect(水波抖动)

     

     pageCurl(上翻页)

     

     pageUnCurl(下翻页)

     

     oglFlip(上下翻转)

     

     cameraIris/cameraIrisHollowOpen/cameraIrisHollowClose  (镜头快门,这一组动画是有效果,只是很难看,不建议使用

     

      而以下为则黑名单:

     

     spewEffect: 新版面在屏幕下方中间位置被释放出来覆盖旧版面.

     

     - genieEffect: 旧版面在屏幕左下方或右下方被吸走, 显示出下面的新版面 ( 阿拉丁灯神?).

     

     - unGenieEffect: 新版面在屏幕左下方或右下方被释放出来覆盖旧版面.

     

     - twist: 版面以水平方向像龙卷风式转出来.

     

     - tubey: 版面垂直附有弹性的转出来.

     

     - swirl: 旧版面 360度旋转并淡出 , 显示出新版面 .

     

     - charminUltra: 旧版面淡出并显示新版面 .

     

     - zoomyIn: 新版面由小放大走到前面, 旧版面放大由前面消失.

     

     - zoomyOut: 新版面屏幕外面缩放出现, 旧版面缩小消失.

     

     - oglApplicationSuspend: 像按 "home" 按钮的效果 .

     */

     

    UIView Animations 动画:

    [ UIView beginAnimations: @"animationID" context: nil ];

    [ UIView setAnimationDuration: 0.5f ];

    [ UIView setAnimationCurve: UIViewAnimationCurveEaseInOut];

    [ UIView setAnimationRepeatAutoreverses: NO ];

    //以下四种效果

    /*

    [ UIView setAnimationTransition: UIViewAnimationTransitionFlipFromLeft forView: self . view cache: YES ]; //oglFlip, fromLeft 

    [ UIView setAnimationTransition: UIViewAnimationTransitionFlipFromRight forView: self . view cache: YES ]; //oglFlip, fromRight  

    [ UIView setAnimationTransition: UIViewAnimationTransitionCurlUp forView: self . view cache: YES ];

    [ UIView setAnimationTransition: UIViewAnimationTransitionCurlDown forView: self . view cache: YES ];

    */

     

    [ self . view exchangeSubviewAtIndex: 1 withSubviewAtIndex: 0 ];

    [ UIView commitAnimations];

    IOS4.0新方法:

    方法: +(void)animateWithDuration:(NSTimeInterval)duration  animations:(void (^)(void))animations;

    + (void)animateWithDuration:(NSTimeInterval)duration  animations:(void (^)(void))animations  completion:(void (^)(BOOL finished))completion; //多一个动画结束后可以执行的操作.

    //下边是嵌套使用,先变大再消失的动画效果.

    [ UIView animateWithDuration: 1.25 animations:^{

      CGAffineTransform newTransform = CGAffineTransformMakeScale( 1.2 , 1.2 );

    [firstImageView setTransform :newTransform];

    [secondImageView setTransform :newTransform];} 

    completion :^(BOOL finished){

    [ UIView animateWithDuration: 1.2 animations:^{

    [firstImageView setAlpha :0 ];

    [secondImageView setAlpha :0 ];} completion :^(BOOL finished){ 

    [firstImageView removeFromSuperview ]; 

    [secondImageView removeFromSuperview ]; }]; 

    }];

     

     cocoa china-各种动画效果demo:http://www.cocoachina.com/bbs/read.php?tid-11820.html


    最新回复(0)