iOS的動畫效果類型及實現方法

實現iOS漂亮的動畫效果主要有兩種方法,web

   一種是UIView層面的,curl

  一種是使用CATransition進行更低層次的控制,動畫

 

      第一種是UIView,UIView方式可能在低層也是使用CATransition進行了封裝,它只能用於一些簡單的、經常使用的效果展示,這裏寫一個經常使用的示例代碼,供你們參考。url

 

 [UIView beginAnimations:@"Curl"context:nil];//動畫開始 
 [UIView setAnimationDuration:0.75]; 
 [UIView setAnimationDelegate:self];
 [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:myview cache:YES]; 
[myview removeFromSuperview]; 
[UIView commitAnimations];
 

 

       第二種方式相對複雜一些,但若是更好的進行控制,仍是使用這種方法吧,spa

基本使用方法能夠看一下以下例子:orm

 

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裏定義的,他們的參數說明能夠參考以下:ip

 

[animation setType:@"suckEffect"];ci

這裏的suckEffect就是效果名稱,能夠用的效果主要有:rem

  pageCurl 向上翻一頁 
 
 pageUnCurl 向下翻一頁 
 
 rippleEffect 滴水效果 
 
 suckEffect 收縮效果,如一塊布被抽走 
 
 cube 立方體效果 
 
 oglFlip 上下翻轉效果 
 

最後再給出一種經常使用代碼供你們參考。animation

// 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;
相關文章
相關標籤/搜索