深度解析iPhone開發動畫過渡過程

來源:互聯網
上載者:User

深度解析iPhone開發動畫過渡過程,主要講解了iphone開發中動畫過度的相關內容,不多說,先來看詳細內容。

1:首先擷取當前的圖形上下文:

 
  1. CGContextRef context = UIGraphicsGetCurrentContext(); 

2:接著設定一些動畫屬性用於開始動畫:

 
  1. [UIView beginAnimations:nil context:context];  
  2. [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];  
  3. [UIView setAnimationDuration:1.0]; 

3:然後設定想要過度的對象的最終狀態.

 
  1. [big setFrame:SMALLRECT];  
  2. [big setAlpha:0.5];  
  3. [little setFrame:BIGRECT];  
  4. [little setAlpha:1.0]; 

4:最後提交動畫,這樣一個動畫就會自動產生了

 
  1. [UIView commitAnimations]; 

其中,setAnimationCurve是設定動畫的方式,他有下面集中方式:

 
  1. UIViewAnimationCurveEaseInOut  //開始和結束時動畫效果比較慢  
  2. UIViewAnimationCurveEaseIn       //開始動畫效果比較慢  
  3. UIViewAnimationCurveEaseOut     //結束動畫效果比較慢  
  4. UIViewAnimationCurveLinear         //平滑的動畫效果 

而setAnimationDuration則是設定動畫的期間.

下面是兩個UIView之間的動畫過度

 
  1.        // Start Animation Block  
  2. //CGContextRef context = UIGraphicsGetCurrentContext();  
  3. CGContextRef context = nil;  
  4. [UIView beginAnimations:nil context:context];  
  5. [UIView setAnimationTransition: UIViewAnimationTransitionFlipFromLeft forView:[self superview] cache:YES];  
  6. [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];  
  7. [UIView setAnimationDuration:1.0];  
  8. // Animations  
  9. [[self superview] exchangeSubviewAtIndex:0 withSubviewAtIndex:1];  
  10. // Commit Animation Block  
  11. [UIView commitAnimations]; 

頁面之間的過度主要依靠UIView setAnimationTransition: forView: cache: 這個方法以及 exchangeSubviewAtIndex:withSubviewAtIndex:
前者通過UIView靜態方法設定過度的動畫種類,後者實現真正的過度函數掉用.種類有如下五種:

 
  1. typedef enum {  
  2.     UIViewAnimationTransitionNone,  
  3.     UIViewAnimationTransitionFlipFromLeft,  
  4.     UIViewAnimationTransitionFlipFromRight,  
  5.     UIViewAnimationTransitionCurlUp,  
  6.     UIViewAnimationTransitionCurlDown,  
  7. } UIViewAnimationTransition; 

除了這種簡單的動畫方式外,其實還有一種利用QuartzCore來做過度動畫.不同的地方在於,這個過度動畫作用於層,換句話說,他動畫直接做用於整個UIView,而不像UIView的動畫,可以作用於UIView局部或本身.當UIView作用與本身時,實際上也就相當於是對層的動畫了.

 
  1. CATransition *animation = [CATransition animation];  
  2. [animation setDelegate:self];  
  3. [animation setDuration:1.0f];  
  4. [animation setTimingFunction:UIViewAnimationCurveEaseInOut];  
  5. [animation setType: kCATransitionMoveIn];  
  6. [animation setSubtype: kCATransitionFromBottom];  
  7. [[self superview] exchangeSubviewAtIndex:0 withSubviewAtIndex:1];  
  8. [[[self superview] layer] addAnimation:animation forKey:@"transitionViewAnimation"];  

setDuration:和UIView中的動畫效果一樣,期間.setTimingFunction:是動畫的種類,和UIView一樣,比如勻速動畫,快速開始結束等.setType:是指定動畫的類型,他有: kCATransitionFade (淡入淡出來補給動畫)kCATransitionMoveIn(從一個方向覆蓋的方式來補給動畫)kCATransitionPush(推送的方式來補給動畫)kCATransitionReveal(一個試圖展現出另外另外一個試圖的方式)當除了第一種方式外(淡入淡出),可以通過setSubType:來制定動畫的方向(因為這些動畫都是直接著用於層的,所以相當於只有試圖間的切換過渡).動畫方向有4個:kCATransitionFromRightkCATransitionFromLeftkCATransitionFromTopkCATransitionFromBotto

小結:深度解析iPhone開發動畫過渡過程的內容介紹完了,希望本文對你有所協助!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.