美文网首页
CALayer 和 CAAnimation

CALayer 和 CAAnimation

作者: 吃面多放葱 | 来源:发表于2018-04-27 15:39 被阅读0次

    Layer

    • Layer可以绘制的动画


      动画类型
    • CALayer position 和 anchorpoint

    positon属性 锚点属性
       - anchorpoint 基于单位坐标系,默认 (0.5,0.5)
       - position    基于点坐标系,具体位置由锚点决定
    frame 属性是在 positon和bounds属性下衍生出来的,frame相对于父类坐标系,bounds定义自身坐标系
    
    锚点位置与postion的变化 锚点如何影响图层变化 图层变化矩阵数据配置
    • Layer Tree 分类

      • 模型树(Model Tree)
      • 显示树(Presentation Tree)
      • 渲染树(Render Tree)
    • 图层(CALayer) 添加动画(CAAnimation)
      动画基于操作图层对象来展示效果,通过下列方法来给图层添加动画

    - (void)addAnimation:(CAAnimation *)anim 
                  forKey:(NSString *)key;
    

    CAAnimation

    • CoreAnimation层级


      层级
    • CoreAnimation如何绘制内容


      绘制流程
    • CoreAnimation API

     CAAnimationGroup `animations`
     CAPropertyAnimation `keypath`
          - CABasicAnimation `fromValue` `toValue`
          - CAKeyframeAnimation `values` `path` `keyTimes`
     CATransition `type` `subType` `startProgress` `endProgress`
    
    • 关于动画时间的控制

    动画暂停

    //根据全局时间获取本地时间
    CFTimeInterval pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil];
    //将图层动画速度设为0
    layer.speed = 0.0;
    //根据暂停的本地时间设置偏移
    layer.timerOffset = pausedTime;
    

    动画恢复

    //得到偏移时间
    CFTimeInterval pausedTime = layer.timeOffset;
    
    //恢复图层的速度
    layer.speed = 1.0;
    
    //设置timerOffset
    layer.timeOffset = 0.0;
    
    //设值为0,进行时间转换
    layer.beginTime = 0.0;
    
    //beginTime在当前时间的左侧
    CFTimeInterval timeSincePause = [layer convertTime:CACurrentMediaTime() fromLayer:nil] - puasedTime;
    layer.beginTime = timeSincePause;
    
    
    //动画恢复的时间点,要求:
    1.beginTime = currentTime - timeOffset
    2.timeOffset = 0
    

    CAMediaTiming Delegate

    CAAimation, CALayer 都遵循 CAMediatiming 协议,都包含下列属性
    begintTime speed timeoffset duration repeatDuration repeatCount fillmode

    CAMediaTiming的理解

    参考资料

    Core Animation Programming Guide

    xiaolinyeyi

    DH's Den

    相关文章

      网友评论

          本文标题:CALayer 和 CAAnimation

          本文链接:https://www.haomeiwen.com/subject/bubblftx.html