iPhone應用程式之CoreAnimation應用和使用方法

來源:互聯網
上載者:User

iPhone應用程式之CoreAnimation應用和使用方法是本文要介紹的內容,CoreAnimation是蘋果對使用者介面動畫的封裝,它的framework是QuartzCore.framework。使用時需要將這個庫添加的工程,我們一起來看內容詳解。

1、CALayerCALayer的絕大多數的屬性都支援動畫,對這些值直接進行設定會隱式的調用動畫效果,只不過動畫的期間(duration)較 短,幾乎看不出效果。如果要達到明顯的動畫效果,就需要顯式的調用動畫。

常用的屬性:

 
  1. @property CGRect bounds;   
  2. @property CGPoint position;   
  3. @property CATransform3D transform; 

如何調動畫?

 
  1. - (void)addAnimation:(CAAnimation *)anim forKey:(NSString *)key 

其中anim是自己建立的動畫對象,繼承於CAAnimation。key是動畫的鍵,一般是nil,或自己設定的值,意義不大。

2、CAAnimationCAAnimation是所有動畫類的基類,一般不會直接使用。它提供給所有子類的一個很有用的屬性是

 
  1. @property(retain) CAMediaTimingFunction *timingFunction; timingFunction 

是一個CAMediaTimingFunction對象,一般這樣建立:

 
  1. [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];  
  2.  kCAMediaTimingFunctionEaseIn 

可以替換為一下值

 
  1. :NSString * const kCAMediaTimingFunctionLinear;  
  2.  NSString * const kCAMediaTimingFunctionEaseIn;  
  3.  NSString * const kCAMediaTimingFunctionEaseOut;  
  4.  NSString * const kCAMediaTimingFunctionEaseInEaseOut; 

3、CABaseAnimation基本的動畫,直接作用於CALayer的對象的各種屬性。 下面是讓一個layer由藍色漸漸層為透明的效果動畫

 
  1. CABasicAnimation *ani = [CABasicAnimation animationWithKeyPath:@"backgroundColor"];  
  2.  ani.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];  
  3.  ani.fromValue = [UIColor blueColor].CGColor;  
  4.  ani.toValue = [UIColor clearColor].CGColor;  
  5. ani.duration = 3;   
  6. [view1.layer addAnimation:ani forKey:@"ani1"]; 

指定要進行動畫的屬性,比如上例中要對layer的backgroundColor屬性進行變化。

 
  1. + (id)animationWithKeyPath:(NSString *)path;  

path指定要變化的屬性路徑,比如@“bounds”,@“bounds.size.width”等。

這三個屬性只需要提供1個或2個就可以了

 
  1. :@property(retain) id fromValue, toValue, byValue; 

具體的作用是: 如果有fromValue和toValue,那麼動畫就是由fromValue變化到toValue。

如果有fromValue和byValue,那麼動畫就是由fromValue變化到fromValue+byValue。

如果只有toValue,那麼動畫就是由當前的值變化到toValue。 如果只有byValue,那麼動畫就是由當前的值變化到當前值+byValue。

你可以這麼想像:當CALayer對象中添加了一個動畫後,系統會開啟一個定時器,不斷重新整理layer的屬性的值,其值由fromValue和toValue根據一定的插值演算法來計算出來的。 只是想像,layer的屬性在動畫過程中並沒有改變,這些顯示效果都是由GPU完成的,不會改變layer的屬性值,如果必要你必須自 己設定layer的屬性。

4、CAKeyframeAnimation主要畫面格動畫 有時你或許需要一個非固定方向的動畫,比如讓一個layer先向右移動100個像素,然後在向下移動100個像素。這時就可以用關鍵 幀動畫。

 
  1. CAKeyframeAnimation *ani = [CAKeyframeAnimation animationWithKeyPath:@"position"];   
  2. ani.values = [NSArray arrayWithObjects:  
  3. NSValue valueWithCGPoint:CGPointMake(100,200)],   
  4. [NSValue valueWithCGPoint:CGPointMake(200,200)],  
  5.  [NSValue valueWithCGPoint:CGPointMake(200,300)], nil];  
  6. ani.duration = 3; [view1.layer addAnimation:ani forKey:@"ani2"]; 

6、UIView的動畫支援UIView可以直接支援view的動畫,可以影響多個View。

動畫是線性變化的,預設 動畫開始變化慢,越來越快 動畫開始變化快,越來越慢 慢入慢出,先慢再快,最後又慢,比較常用

 
  1. [UIView beginAnimations:nil context:nil];   
  2. [UIView setAnimationDuration:0.3];   
  3. //一些view的操作  
  4. view.frame = xxx; [UIView commitAnimations]; 

小結:iPhone應用程式之CoreAnimation應用和使用方法的內容介紹完了,希望本文對你有所協助!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.