《iOS核心动画高级技巧》笔记 — Part1

中文译文地址

一、UIView与CALayer

UIView和CALayer关系图

UIView实现绘制自定义任务时,调用-drawRect:方法,为关联的图层设置contents属性的内容。

二、隐式动画

当改变CALayer的一个可做动画的属性时,属性目标值不会立刻在屏幕上显示出来,而是从先前得值平滑过渡到新的值

1、获取行为(改变属性时CALayer自动应用的动画)的流程:

当图层的一个可做动画的属性被修改时,图层的-actionForKey:方法被调用,参数为属性名称,

然后,触发以下流程:

获取属性隐式动画过程

2、动画实现:

(1)默认情况下,在当前线程的栈顶事物中被调用执行

(2)修改默认行为,示例如下:

[CATransaction begin];

[CATransaction setAnimationDuration:2.0];

self.colorLayer.backgroundColor = [UIColor colorWithRed:red green:green blue:blue alpha:1.0].CGColor;

if (self.flag) {

self.colorLayer.position = CGPointMake(self.colorLayer.position.x + 50, self.colorLayer.position.y);

}else{

self.colorLayer.position = CGPointMake(100, 100);

}

self.flag = !self.flag;

[CATransaction commit];

3、UIView关联的图层,隐式动画被禁用,因为:actionForLayer:forKey:返回值为nil

三、显示动画

相关的类对象关系图

显式动画类关系图(部分)

添加显示动画的方法:-addAnimation:forKey:(备注:该方法调用的时候,应该会创建CATransaction实例对象)

四、备注:相关委托方法


委托方法记录(部分)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容