2011年7月2日 星期六

iOS development: Ch6-2 翻轉動畫

翻轉View

-(IBAction) switchViews: (id) sender{ //我們在switchViews,才將yellowViewControll載入以確保不會照成記憶體的負擔
//要製作動畫,需要宣告一個動畫區塊
[UIView beginAnimations:@"View Flip" context:NULL]; //宣告一個動畫區塊 ,第一個參數是標題,第二個參數是 (Void *)  
[UIView setAnimationDuration:1.25]; //動畫曲線 ,設定動畫的快慢
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; //讓動畫切入與轉出時速度變慢,中間則加速. 這樣是不是比較讚
if(self.yellowViewController.view.superview ==nil){// 若目前檢視不是yellow,那就更換成如下檢視
if(self.yellowViewController ==nil){//先確定是否沒有yellowViewController才開始如下建立它
YellowViewController *yellowController=[[YellowViewController alloc] initWithNibName: @"YellowView" bundle: nil];
self.yellowViewController=yellowController;
[yellowController release];
/*iOS 提供以下方法來給我們做動畫
UIViewAnimationTransitionFlipFromRight
UIViewAnimationTransitionFlipFromLeft
UIViewAnimationTransitionCurlUp
UIViewAnimationTransitionCurlDown
我們使用 UIViewAnimationTransitionFlipFromRightUIViewAnimationTransitionFlipFromRight讓動畫看起來像是左右翻轉
*/
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight 
  forView: self.view 
cache:YES]; //使用cache 會讓動畫比較順暢,因為他會事先做截圖
[blueViewController viewWillAppear:YES]; //基本上是什麼也沒做,不過擔心iOS更新後會讓App動作變奇怪,所以還是實作它
[yellowViewController viewWillDisappear:YES];//基本上是什麼也沒做,不過擔心iOS更新後會讓App動作變奇怪,所以還是實作它
[blueViewController.view removeFromSuperview]; //將blueView移除
[self.view insertSubview:yellowViewController.view atIndex:0]; //加入根檢視
[yellowViewController viewDidDisappear:YES];
[blueViewController viewDidAppear:YES];
}else{ //否則(若目前檢視不是blue,那就更換成如下檢視)
if(self.blueViewController ==nil){ //確定是沒有blueViewController,則如下建立它
BlueViewController *blueController=[[BlueViewController alloc] initWithNibName: @"BlueView" bundle: nil];
self.blueViewController=blueController;
[blueController release];
}
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView: self.view cache:YES];
[yellowViewController viewWillAppear:YES];//基本上是什麼也沒做,不過擔心iOS更新後會讓App動作變奇怪,所以還是實作它
[blueViewController viewWillDisappear:YES];//基本上是什麼也沒做,不過擔心iOS更新後會讓App動作變奇怪,所以還是實作它
[yellowViewController.view removeFromSuperview];//yellowView移除
[self.view insertSubview:blueViewController.view atIndex:0];//加入根檢視
[blueViewController viewDidDisappear:YES];//基本上是什麼也沒做,不過擔心iOS更新後會讓App動作變奇怪,所以還是實作它
[yellowViewController viewDidAppear:YES];//基本上是什麼也沒做,不過擔心iOS更新後會讓App動作變奇怪,所以還是實作它
}
[UIView commitAnimations];
}

沒有留言: