CATransition视图切换动画的学习

时间:2023-01-21 23:31:54

CATransition是CAAnimation的子类
直接利用CATransition可以编写一些系统提供好的视图切换效果动画,例如下面举一个最简单的例子,imageView图片切换的动画

//_imgPic 设置新的图片
[_imgPic setImage:image];
//利用CATransition类方法,创建一个animation对象
CATransition *animation = [CATransition animation];
//设置对象的执行事件
[animation setDuration:1.0];
/*设置动画的填充模式,官方给出以下4种模式

CA_EXTERN NSString * const kCAFillModeForwards
__OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
CA_EXTERN NSString * const kCAFillModeBackwards
__OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
CA_EXTERN NSString * const kCAFillModeBoth
__OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);
CA_EXTERN NSString * const kCAFillModeRemoved
__OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);

*/
[animation setFillMode:kCAFillModeForwards];
//这是设置动画执行快慢 随着事件的变化函数
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
//这是官方提供的几种效果
/* 各种动画效果*/

//@"cube" @"moveIn" @"reveal" @"fade"(default) @"pageCurl" @"pageUnCurl" @"suckEffect" @"rippleEffect" @"oglFlip"
[animation setType:@"rippleEffect"];
//设置动画方向
[animation setSubtype:kCATransitionFromTop];
//直接在视图的layer上添加动画并执行
[_imgPic.layer addAnimation:animation forKey:nil];

现在运行一下就可一看到效果了 ,很多动画还有更加高级的动画编写,后续会继续更新