CAAnimation的子類,用於做轉場動畫,能夠為層提供移出屏幕和移入屏幕的動畫效果。iOS比Mac OS X的轉場動畫效果少一點
UINavigationController就是通過CATransition實現了將控制器的視圖推入屏幕的動畫效果
屬性解析:
具體代碼:
/* 過渡效果 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]; }
控制器直接切換動畫
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];
以上就是本文的全部內容,希望對大家的學習有所幫助。