需要在frameworks中添加QuartzCore.framework
在接口程序中加上頭文件 #import <QuartzCore/QuartzCore.h>
/*好多動畫效果*/
CATransition *transition = [CATransition animation];transition.duration = 1.0f; /* 間隔時間*/
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; /* 動畫的開始與結束的快慢*/
transition.type = @"rippleEffect"; /* 各種動畫效果*/
//@"cube" @"moveIn" @"reveal" @"fade"(default) @"pageCurl" @"pageUnCurl" @"suckEffect" @"rippleEffect" @"oglFlip"
transition.subtype = kCATransitionFromRight; /* 動畫方向*/transition.delegate = self;
[navigationController.view.layer /* 在想添加CA動畫的VIEW的層上添加此代碼*/addAnimation:transition forKey:nil];
//另外加一句,transition在申請時用的是+方法,所以不需要自己進行release ,在層上添加後不要認爲retainCount已經+1,就還要release
//實際上CATransition類中還有一個屬性是removedOnCompletion,是此動畫執行完後會自動remove,默認值爲true
CATransition的type屬性
這裏使用了setType與setSubtype組合,這使用個比較保險,因爲他的參數就是官方API裏定義的,他們的參數說明可以參考如下:
setType:可以返回四種類型: kCATransitionFade淡出 kCATransitionMoveIn覆蓋原圖 kCATransitionPush推出 kCATransitionReveal底部顯出來 setSubtype:也可以有四種類型: kCATransitionFromRight; kCATransitionFromLeft(默認值) kCATransitionFromTop; kCATransitionFromBottom
還有一種設置動畫類型的方法,不用setSubtype,只用setType
animation.type=@"pageCurl";
pageCurl 向上翻一頁 pageUnCurl 向下翻一頁 rippleEffect 滴水效果 suckEffect 收縮效果,如一塊布被抽走 cube 立方體效果 oglFlip 上下翻轉效果
示例
CATransition *animation=[CATransition animation];
animation.delegate=self;
animation.duration=1.0f;
animation.timingFunction=UIViewAnimationCurveEaseInOut;
animation.type=kCATransitionMoveIn;
animation.subtype=kCATransitionFromTop;
[myView.layer addAnimation:animation forKey:@"move in"];