• 转载 动画选择问题 CATransition


    要给webView加动画,看了下动画的添加,发现要使用 [UIView beginAnimations:@"animationID" context:nil];  这种的话就是整个页面全是动画翻转,这不是我所想看到的。所以最后选择了CATrasition,图层的方式,感觉还是比较好用的。下面是动画的简单比较~~ 懒得写了 直接转载

    转载自 http://2015.iteye.com/blog/1122130

    为了避免视图之间切换的呆板问题,在IPHONE中引入了转换动画效果,分别在UIKit.framework和QuartzCore.framework中,后者的动画类型要比前者丰富一些。

    Ios代码  收藏代码
    1. - (IBAction)switchViews:(id)sender{  
    2.     //准备动画  
    3.     [UIView beginAnimations:@"animationID" context:nil];  
    4.     //动画播放持续时间  
    5.     [UIView setAnimationDuration:0.5f];  
    6.     //动画速度  
    7.     [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];  
    8.     [UIView setAnimationRepeatAutoreverses:NO];  
    9.       
    10.     UIButton *theButton = (UIButton *)sender;  
    11.       
    12.     //动画方向  
    13.     switch (theButton.tag) {  
    14.         case 0:  
    15.             [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES];  
    16.             break;  
    17.         case 1:  
    18.             [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES];        
    19.             break;  
    20.         case 2:  
    21.             [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];  
    22.             break;  
    23.         case 3:  
    24.             [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.view cache:YES];  
    25.             break;  
    26.         default:  
    27.             break;  
    28.     }  
    29.       
    30.     [self.view exchangeSubviewAtIndex:1 withSubviewAtIndex:0];  
    31.     [UIView commitAnimations];  
    32. }  

    下面的动画需要导入QuartzCore.framework库,并在实现文件中导入。

    Ios代码  收藏代码
    1. #import <QuartzCore/QuartzCore.h>  
    2.   
    3. - (IBAction)switchViews:(id)sender{  
    4.     //准备动画  
    5.     CATransition *animation = [CATransition animation];  
    6.     animation.delegate = self;  
    7.     //动画播放持续时间  
    8.     animation.duration = 0.5f;  
    9.     //动画速度  
    10.     animation.timingFunction = UIViewAnimationCurveEaseInOut;  
    11.     animation.fillMode = kCAFillModeForwards;  
    12.     animation.removedOnCompletion = NO;  
    13.       
    14.     UIButton *theButton = (UIButton *)sender;  
    15.       
    16.     //动画效果  
    17.     switch (theButton.tag) {  
    18.         case 0:  
    19.             animation.type = @"cube";  
    20.             break;  
    21.         case 1:  
    22.             animation.type = @"suckEffect";  
    23.             break;  
    24.         case 2:  
    25.             animation.type = @"oglFlip";  
    26.             break;  
    27.         case 3:  
    28.             animation.type = @"rippleEffect";  
    29.             break;  
    30.         case 4:  
    31.             animation.type = @"pageCurl";  
    32.             break;  
    33.         case 5:  
    34.             animation.type = @"pageUnCurl";  
    35.             break;  
    36.         case 6:  
    37.             animation.type = @"cameraIrisHollowOpen ";  
    38.             break;  
    39.         case 7:  
    40.             animation.type = @"cameraIrisHollowClose ";  
    41.             break;  
    42.         default:  
    43.             break;  
    44.     }  
    45.       
    46.     [self.view.layer addAnimation:animation forKey:@"animation"];  
    47.     [self.view exchangeSubviewAtIndex:1 withSubviewAtIndex:0];  
    48. }  

    下面的动画同样需要导入QuartzCore.framework库,并在实现文件中导入。

    Ios代码  收藏代码
    1. #import <QuartzCore/QuartzCore.h>  
    2. - (IBAction)switchViews:(id)sender{  
    3.     CATransition *animation = [CATransition animation];  
    4.     animation.duration = 0.5f;  
    5.     animation.timingFunction = UIViewAnimationCurveEaseInOut;  
    6.     animation.fillMode = kCAFillModeForwards;  
    7.       
    8.     UIButton *theButton = (UIButton *)sender;  
    9.       
    10.     switch (theButton.tag) {  
    11.         case 0:  
    12.             /*动画效果  
    13.   
    14.                    kCATransitionFade  
    15.   
    16.                    kCATransitionMoveIn  
    17.   
    18.                    kCATransitionPush  
    19.   
    20.                    kCATransitionReveal  
    21.   
    22.             */  
    23.             animation.type = kCATransitionPush;  
    24.             /*动画方向  
    25.   
    26.                    kCATransitionFromRight  
    27.   
    28.                    kCATransitionFromLeft  
    29.   
    30.                    kCATransitionFromTop  
    31.   
    32.                    kCATransitionFromBottom  
    33.   
    34.             */  
    35.             animation.subtype = kCATransitionFromTop;  
    36.             break;  
    37.         case 1:  
    38.             animation.type = kCATransitionMoveIn;  
    39.             animation.subtype = kCATransitionFromTop;  
    40.             break;  
    41.         case 2:  
    42.             animation.type = kCATransitionReveal;  
    43.             animation.subtype = kCATransitionFromTop;  
    44.             break;  
    45.         case 3:  
    46.             animation.type = kCATransitionFade;  
    47.             animation.subtype = kCATransitionFromTop;  
    48.             break;  
    49.         default:  
    50.             break;  
    51.     }  
    52.       
    53.     [self.view.layer addAnimation:animation forKey:@"animation"];  
    54. }  

    UIKit.framework中的动画是对UIView的,而QuartzCore.framework是针对视图的属性layer来实现的,后者与视图动画比起来,具备更大的优势,更容易进行转换,倾斜,放大,缩小等等。

  • 相关阅读:
    详述JavaScript实现继承的几种方式
    理解javascript函数调用和“this”
    React-Native 组件开发方法
    React Native 中 component 生命周期
    React-Native 样式指南
    React Native 之flex布局
    转每天一个linux命令(5):rm 命令
    [Python爬虫] 在Windows下安装PhantomJS和CasperJS及入门介绍(上)
    转每天一个linux命令(4):mkdir命令
    转每天一个linux命令(3):pwd命令
  • 原文地址:https://www.cnblogs.com/superhappy/p/CATrasition.html
Copyright © 2020-2023  润新知