CALayer层就是真正绘制UIView所要展示的东西
CALayer
是继承与NSObject的,所以他是
不具备响应
的。而
UIView是继承与UIResponder
的,UIResponder本身
可以提供事件响应
,再用CALayer给他绘制一个图像,那一个具有响应事件的对象就诞生了,他就是我们的UIView。
CAAnimation
通过他的
4个子类
,我们可以
实现很多绚丽的动画效果
。
1.
CABasicAnimation用来
创建基于两个状态的动画,一
个初始状态一个终止状态
CABasicAnimation * animaiton = [CABasicAnimation animationWithKeyPath:@"position"];
animaiton.removedOnCompletion = NO;
animaiton.fillMode = kCAFillModeForwards;
animaiton.duration = 2;
animaiton.toValue = [NSValue valueWithCGPoint:CGPointMake(400, 400)];
[redView.layer addAnimation:animaiton forKey:nil];
2.
CAKeyframeAnimation和
CABasicAnimation的不同点在于他可以
指定多个状态
,不局限于始末状态,这样
你的动画将更加灵活。
CAKeyframeAnimation * animation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
animation.values = @[[NSValue valueWithCGPoint:CGPointMake(0, 0)],[NSValue valueWithCGPoint:CGPointMake(100, 100)],[NSValue valueWithCGPoint:CGPointMake(0, 200)]]; animation.duration = 2
animation.removedOnCompletion = NO;
animation.fillMode = kCAFillModeForwards;
[redView.layer addAnimation:animation forKey:@"keyframe"];
3.
CAAnimationGroup
CABasicAnimation和
CAKeyframeAnimation 多组动画嵌套执行
group.animations = @[
CAKeyframeAnimation
,
CABasicAnimation
];
3.
CATransition