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