iOS图层转场动画
1 动画类型 2 3 4 CAAnimation的子类,用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果。iOS比Mac OS X的转场动画效果少一点 5 UINavigationController就是通过CATransition实现了将控制器的视图推入屏幕的动画效果 6 属性解析: 7 type:动画过渡类型 8 subtype:动画过渡方向 9 startProgress:动画起点(在整体动画的百分比) 10 endProgress:动画终点(在整体动画的百分比) 11 12 13 14 15 16 /* 过渡效果 17 18 fade //交叉淡化过渡(不支持过渡方向) kCATransitionFade 19 20 push //新视图把旧视图推出去 kCATransitionPush 21 22 moveIn //新视图移到旧视图上面 kCATransitionMoveIn 23 24 reveal //将旧视图移开,显示下面的新视图 kCATransitionReveal 25 26 cube //立方体翻滚效果 27 28 oglFlip //上下左右翻转效果 29 30 suckEffect //收缩效果,如一块布被抽走(不支持过渡方向) 31 32 rippleEffect //滴水效果(不支持过渡方向) 33 34 pageCurl //向上翻页效果 35 36 pageUnCurl //向下翻页效果 37 38 cameraIrisHollowOpen //相机镜头打开效果(不支持过渡方向) 39 40 cameraIrisHollowClose //相机镜头关上效果(不支持过渡方向) 41 42 */ 43 44 45 46 /* 过渡方向 47 48 kCATransitionFromRight 49 50 kCATransitionFromLeft 51 52 kCATransitionFromBottom 53 54 55 56 57 58 59 60 61 62 63 //转场动画--》是针对某个view的图层进行转场动画 64 #import "ViewController.h" 65 #import <QuartzCore/QuartzCore.h> 66 67 @interface ViewController () 68 { 69 UIView *_lastview; 70 BOOL flag; 71 } 72 @end 73 74 @implementation ViewController 75 76 - (void)viewDidLoad 77 { 78 [super viewDidLoad]; 79 flag=true; 80 UIView *view=[[UIView alloc] initWithFrame:CGRectMake(100, 100, 200, 200)]; 81 view.backgroundColor=[UIColor redColor]; 82 [self.view addSubview:view]; 83 [view release]; 84 _lastview=view; 85 // Do any additional setup after loading the view, typically from a nib. 86 } 87 88 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 89 if(flag){ 90 _lastview.backgroundColor=[UIColor yellowColor]; 91 flag=false; 92 93 } 94 else{ 95 _lastview.backgroundColor=[UIColor redColor]; 96 flag=true; 97 } 98 99 //转场动画--就是对某个view进行动画切换。 100 //1:如果是控制器之间的切换,其实window上view进行切换 101 CATransition *transion=[CATransition animation]; 102 //设置转场动画的类型 103 transion.type=@"pageCurl"; 104 //设置转场动画的方向 105 transion.subtype=@"fromLeft"; 106 107 //把动画添加到某个view的图层上 108 [self.view.layer addAnimation:transion forKey:nil]; 109 110 }
控制器转场
1 UIApplication *app=[UIApplication sharedApplication]; 2 AppDelegate *dd=app.delegate; 3 4 MyViewController *my=[[MyViewController alloc] init]; 5 //切换根控制器,其实把视图控制器的view在window上切换。所以在转场动画要作用在window上 6 dd.window.rootViewController=my; 7 CATransition *trans=[CATransition animation]; 8 9 trans.type=@"pageCurl"; 10 trans.subtype=@"fromTop"; 11 12 [dd.window.layer addAnimation:trans forKey:nil]; 13 14 [my release];