CALayer 和 CAAnimation

2018-04-27  本文已影响0人  吃面多放葱

Layer

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

CAAnimation

 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

上一篇下一篇

猜你喜欢

热点阅读