- (IBAction)btnClicked:(id)sender { //创建CATransition CATransition *transition = [CATransition animation]; //持续时长 transition.duration = 0.5; //计时函数,从头到尾的流畅度 transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];; // @"cube" @"moveIn" @"reveal" @"fade"(default) @"pageCurl" @"pageUnCurl" // @"suckEffect" @"rippleEffect" @"oglFlip" //动画类型 transition.type = @"flip"; transition.subtype = kCATransitionFromRight; // 动画方向 //要令一个转场生效,组要将动画添加到将要变为动画视图所附着的图层。例如在两个视图控制器之间进行转场,那就将动画添加到窗口的图层中: //如果是将控制器内的子视图转场到另一个子视图,就将动画加入到视图控制器的图层。还有一种选择,用视图控制器内部的视图作为替代,将你的子视图作为主视图的子图层: //如果你使用的是导航控制器,可以将动画加到导航控制器的视图图层中。 // case 1 // [self.navigationController.view.layer addAnimation:transition forKey:@"transition"]; // UIViewController *vc= [[UIViewController alloc] init]; // vc.view.backgroundColor = [UIColor redColor]; // [self.navigationController pushViewController:vc animated:YES]; // case 2 transition.type = @"pageCurl"; transition.subtype = kCATransitionFromLeft;
// 效果神奇 (*****) transition.startProgress = 0.3;
transition.endProgress = 0.8;
// 这俩属性要同时设置
transition.fillMode = @"forwards";
transition.removedOnCompletion = NO; [self.greenView.layer addAnimation:transition forKey:@"green"]; }
@interface CATransition : CAAnimation
CATransition是CAAnimation的子类
CAAnimation类
CAAnimation类,是一个抽象类。遵循CAMediaTiming协议和CAAction协议!
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
@property(getter=isRemovedOnCompletion) BOOL removedOnCompletion
设置是否动画完成后,动画效果从设置的layer上移除。默认为YES。
timingFunction
@property(retain) CAMediaTimingFunction *timingFunction
设置动画的“时机”效果。就是动画自身的“节奏”:比如:开始快,结束时变慢;开始慢,结束时变快;匀速;等,在动画过程中的“时机”效果。
animation
+ (id)animation
创建并返回一个CAAnimation实例。
defaultValueForKey
+ (id)defaultValueForKey:(NSString *)key
根据属性key,返回相应的属性值。
CAAnimation实例方法
shouldArchiveValueForKey
- (BOOL)shouldArchiveValueForKey:(NSString *)key
返回指定的属性值是否可以归档。
key:指定的属性。
YES:指明该属性可以被归档;NO:不能被归档。
CAAnimation协议方法
animationDidStart
- (void)animationDidStart:(CAAnimation *)theAnimation
动画开始时,执行的方法。
theAnimation:正在执行动画的CAAnimation实例。
animationDidStop:finished
- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag
动画执行完成或者动画为执行被删除时,执行该方法。
theAnimation:完成或者被删除的动画实例
flag:标志该动画是执行完成或者被删除:YES:执行完成;NO:被删除。