一、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实例对象)
四、备注:相关委托方法