zoukankan      html  css  js  c++  java
  • 核心动画 Core Animation

    1 其4个实现类
    2 CABasicAnimation    -- 
    3                       |- CAPropertyAnimation --
    4 CAKeyframeAnimation --                         |
    5                                                |
    6 CAAnimationGroup  ------------------------------- CAAnimation
    7                                                |
    8 CATransition      ——————————————

    常用属性(通用属性)

    duration:动画的持续时间
    repeatCount:动画的重复次数
    repeatDuration:动画的重复时间
    fillMode:决定当前对象在非active时间段的行为.比如动画开始之前,动画结束之后
    beginTime:可以用来设置动画延迟执行时间,若想延迟2s,就设置为CACurrentMediaTime()+2,CACurrentMediaTime()为图层的当前时间
    以上来自CAMediaTiming协议的属性
    
    timingFunction:速度控制函数,控制动画运行的节奏
    delegate:动画代理
    removedOnCompletion:默认为YES,代表动画执行完毕后就从图层上移除,图形会恢复到动画执行前的状态。如果想让图层保持显示动画执行后的状态,那就设置为NO,不过还要设置fillMode为kCAFillModeForwards
    常用的keyPath
    
    CATransform3D Key Paths
    
    //角度转弧度
    
    #define angle2Radio(angle) ((angle) / 180.0 * M_PI)
    
    #define angle2Radio(angle) ((angle) / 180.0 * M_PI)
    
    transform.rotation.x      NSNumber object
    transform.rotation.y      NSNumber object
    transform.rotation.z      NSNumber object
    transform.rotation       NSNumber object
    transform.scale.x        NSNumber object
    transform.scale.y        NSNumber object      
    transform.scale.z        NSNumber object
    transform.scale            NSNumber object
    transform.translation.x    NSNumber object
    transform.translation.y     NSNumber object
    transform.translation.z    NSNumber object
    transform.translation/NSValue object containing an NSSize or CGSize data type
    
    CGPoint Key Paths
    
    position.x
    position.y
    position   CGPoint 
    
    CGRect Key Paths
    
    bounds.origin     CGPoint.
    bounds.origin.x
    bounds.origin.y
    bounds.size       CGSize.
    bounds.size.width
    bounds.size.height
    CABasicAnimation
    
    常用属性
    keyPath:通过指定CALayer的一个属性名称为keyPath(NSString类型),并且对CALayer的这个属性的值进行修改,达到相应的动画效果。比如,指定@”position”为keyPath,就修改CALayer的position属性的值,以达到平移的动画效果
    fromValue:keyPath相应属性的初始值
    toValue:keyPath相应属性的结束值随着动画的进行,在长度为duration的持续时间内,keyPath相应属性的值从fromValue渐渐地变为toValue
    ⚠注意事项
    
    如果fillMode=kCAFillModeForwards和removedOnComletion=NO,
    那么在动画执行完毕后,图层会保持显示动画执行后的状态。
    但在实质上,图层的属性值还是动画执行前的初始值,并没有真正被改变。
    比如,CALayer的position初始值为(0,0),
    CABasicAnimation的fromValue为(10,10),toValue为(100,100),
    虽然动画执行完毕后图层保持在(100,100)这个位置,实质上图层的position还是为(0,0)   
    CAKeyframeAnimation
    
    属性解析:
    values:就是上述的NSArray对象。里面的元素称为”关键帧”(keyframe)。动画对象会在指定的时间(duration)内,依次显示values数组中的每一个关键帧
    path:可以设置一个CGPathRefCGMutablePathRef,让层跟着路径移动。path只对CALayer的anchorPoint和position起作用。如果你设置了path,那么values将被忽略
    keyTimes:可以为对应的关键帧指定对应的时间点,其取值范围为0到1.0,keyTimes中的每一个时间值都对应values中的每一帧.当keyTimes没有设置的时候,各个关键帧的时间是平分的
    CABasicAnimation可看做是最多只有2个关键帧的CAKeyframeAnimation
    CAAnimationGroup
    
    CAAnimation的子类,可以保存一组动画对象,将CAAnimationGroup对象加入层后,组中所有动画对象可以同时并发运行
    属性解析: animations:用来保存一组动画对象的NSArray 默认情况下,一组动画对象是同时运行的,也可以通过设置动画对象的beginTime属性来更改动画的开始时间
    
    注意,动画的时间,次数,应该由CAAnimationGroup对象进行设置。
    CATransition
    
    CAAnimation的子类,用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果。iOS比Mac OS X的转场动画效果少一点
    
    UINavigationController就是通过CATransition实现了将控制器的视图推入屏幕的动画效果
    属性解析:
    
    type:动画过渡类型
    subtype:动画过渡方向
    startProgress:动画起点(在整体动画的百分比)
    endProgress:动画终点(在整体动画的百分比)
    
    
   fade    |   交叉淡化过渡(不支持过渡方向) kCATransitionFade
    -----------------------|----------------------------------------------- 
   push      |  新视图把旧视图推出去 kCATransitionPush   moveIn    | 新视图移到旧视图上面 kCATransitionMoveIn
 reveal  |   将旧视图移开,显示下面的新视图 kCATransitionReveal
   cube     |  立方体翻滚效果
   oglFlip   | 上下左右翻转效果
   suckEffect |    收缩效果,如一块布被抽走(不支持过渡方向)
   rippleEffect  | 滴水效果(不支持过渡方向)
   pageCurl      |  向上翻页效果
   pageUnCurl      | 向下翻页效果
   cameraIrisHollowOpen  |  相机镜头打开效果(不支持过渡方向)
   cameraIrisHollowClose | 相机镜头关上效果(不支持过渡方向)                      过渡方向:    
  kCATransitionFromRight
  kCATransitionFromLeft
  kCATransitionFromBottom
  kCATransitionFromTop
    
    CATransition的使用
    
    objective-c:
    
      CATransition *anim = [CATransition animation];
      anim.type = @“cube”; // 动画过渡类型
      anim.subtype = kCATransitionFromTop; // 动画过渡方向
      anim.duration = 1; // 动画持续1s
      // 代理,动画执行完毕后会调用delegate的animationDidStop:finished:
      anim.delegate = self;
     /*******中间穿插改变layer属性的代码**********/   
    
      [layer addAnimation:anim forKey:nil];
  • 相关阅读:
    能打开电脑都看懂的系列之Windows下修改MongoDB用户密码
    vue element el-input 输入框当内容长度超出时显示el-tooltip提示
    vue 数据代理帮助类 ux-data-proxy
    微信小程序全局设置分享内容
    解决vscode更新后Ext Js插件无法使用问题
    ux.form.field.Year 只能选年的时间扩展
    ux.form.field.Month 只能选年、月的时间扩展
    Ext Js 6+ 动态切换皮肤
    Ext Js 6.2.1 classic grid 滚动条bug解决方案
    Ext-JS-Modern-Demo 面向移动端示例
  • 原文地址:https://www.cnblogs.com/mshong1616/p/5095153.html
Copyright © 2011-2022 走看看