动画浅析-CAAnimation和CATransition




标签:caanimationcatransitionios动画

现在明白了,要做动画。需要用到CATransition类!

那就学习一下吧!


先贴一个入门代码!

[_imgPic setImage:p_w_picpath];// 设置新的图片

CATransition *animation =[CATransitionanimation];

[animationsetDuration:1.0];

[animationsetFillMode:kCAFillModeForwards];

[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];

[animationsetType:@"rippleEffect"];// rippleEffect

[animationsetSubtype:kCATransitionFromTop];

[_imgPic.layer addAnimation:animation forKey:nil];


实现功能就是,在UIImageView换新图片的时候,做相应的动画效果!好让,UIImageView转化时,不至于太单调!


第一句,就让我很困惑!

CATransition*animation= [CATransitionanimation];

+(id)animation方法

创建一个CATransition对象。但是CATransition并没有animation方法?!


@interface CATransition :CAAnimation


原来如此,CATransition是CAAnimation的子类


骑驴看唱本吧!


CAAnimation类


CAAnimation类,是一个抽象类。遵循CAMediaTiming协议和CAAction协议!


CAAnimationis an abstract animation class.It provides the basic support for theCAMediaTimingandCAActionprotocols.


CAMediaTiming协议

可以调整时间,包括持续时间,速度,重复次数。

CAAction协议

可以通过响应动作的方式来显示动画。


CAAnimation有很多派生类

CATransition提供渐变效果:(推拉push效果,消退fade效果,揭开reveal效果)。

CAAnimationGroup允许多个动画同时播放。

CABasicAnimation提供了对单一动画的实现。

CAKeyframeAnimation关键桢动画,可以定义行动路线。

CAConstraint约束类,在布局管理器类中用它来设置属性。

CAConstraintLayoutManager约束布局管理器,是用来将多个CALayer进行布局的.各个CALayer是通过名称来区分,而布局属性是通过CAConstraint来设置的。

CATransaction事务类,可以对多个layer的属性同时进行修改.它分隐式事务,和显式事务。

CAAnimation属性

delegate

@property(retain)id delegate

为CAAnimation设置代理。默认为nil。

注意:一个CAAnimation实例,不能设置delegate为self。会引起循环引用。


removedOnCompletion