實現iOS漂亮的動畫效果主要有兩種方法,
一種是UIView層面的,
一種是使用CATransition進行更低層次的控制,
第一種是UIView,UIView方式可能在低層也是使用CATransition進行了封裝,它只能用於一些簡單的、常用的效果展現,這裡寫一個常用的示例代碼,供大家參考。
[UIView beginAnimations:@"Curl"context:nil];//動畫開始 [UIView setAnimationDuration:0.75]; [UIView setAnimationDelegate:self]; [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:myview cache:YES]; [myview removeFromSuperview]; [UIView commitAnimations];第二種方式相對復雜一些,但如果更好的進行控制,還是使用這種方法吧,
基本使用方法可以看一下如下例子:
CATransition *animation = [CATransition animation]; [animation setDuration:1.25f]; [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]]; [animation setType:kCATransitionReveal]; [animation setSubtype: kCATransitionFromBottom]; [self.view.layer addAnimation:animation forKey:@"Reveal"];這裡使用了setType與setSubtype組合,這使用個比較保險,因為他的參數就是官方API裡定義的,他們的參數說明可以參考如下:
[animation setType:@"suckEffect"];
這裡的suckEffect就是效果名稱,可以用的效果主要有:
pageCurl 向上翻一頁 pageUnCurl 向下翻一頁 rippleEffect 滴水效果 suckEffect 收縮效果,如一塊布被抽走 cube 立方體效果 oglFlip 上下翻轉效果最後再給出一種常用代碼供大家參考。
// Curl the image up or down CATransition *animation = [CATransition animation]; [animation setDuration:0.35]; [animation setTimingFunction:UIViewAnimationCurveEaseInOut]; if (!curled) { //animation.type = @"mapCurl"; animation.type = @"pageCurl"; animation.fillMode = kCAFillModeForwards; animation.endProgress = 0.99; } else { //animation.type = @"mapUnCurl"; animation.type = @"pageUnCurl"; animation.fillMode = kCAFillModeBackwards; animation.startProgress = 0.01; } [animation setRemovedOnCompletion:NO]; [view exchangeSubviewAtIndex:0 withSubviewAtIndex:1]; [view addAnimation:animation forKey"pageCurlAnimation"]; // Disable user interaction where necessary if (!curled) { } else { } curled = !curled;