此文為轉載
PS:iOS4.0以後 不建議使用這種方式,可以時用新的方式:Animating Views with Blocks
iPhone應用之UIView動畫實作效果是本文要介紹的内容,主要是來介紹UIView動畫的各種表現方式,我們先來看詳細内容 。
傳回一個布爾值表示動畫是否結束 。
- + (BOOL)areAnimationsEnabled
傳回值
如果動畫結束傳回YES,否則NO 。
- beginAnimations:context:
開始一個動畫塊
- + (void)beginAnimations:(NSString *)animationID context:(void *)context
參數
animationID
動畫塊内部應用程式辨別用來傳遞給動畫代理消息-這個選擇器運用setAnimationWillStartSelector:和setAnimationDidStopSelector: 方法來設定 。
context
附加的應用程式資訊用來傳遞給動畫代理消息-這個選擇器使用setAnimationWillStartSelector: 和setAnimationDidStopSelector: 方法 。
讨論
這個值改變是因為設定了一些需要在動畫塊中産生動畫的屬性 。動畫塊可以被嵌套 。如果在沒有在動畫塊中調用那麼setAnimation類方法将什麼都不做 。使用 beginAnimations:context:來開始一個動畫塊并用commitAnimations類方法來結束一個動畫塊 。
commitAnimations
結束一個動畫塊并開始當他在動畫塊外時 。
- + (void)commitAnimations
讨論
如果目前的動畫塊是最外層的動畫塊,當應用程式傳回到循環運作時開始動畫塊 。動畫在一個獨立的線程中所有應用程式不會中斷 。使用這個方法,多個動畫可以被實作 。檢視setAnimationBeginsFromCurrentState:來了解如果開始一個動畫當另外一個動畫在播放的時候 。
layerClass
傳回類用來建立這一個本類的layer執行個體對象 。
- + (Class)layerClass
傳回值
一個用來建立視圖layer的類
讨論
重寫子類來指定一個自定義類用來顯示 。當在建立視圖layer時候調用 。預設的值是CALayer類對象 。
setAnimationBeginsFromCurrentState
:
設定動畫從目前狀态開始播放 。
- + (void)setAnimationBeginsFromCurrentState:(BOOL)fromCurrentState
參數
fromCurrentState
YES如果動畫需要從他們目前狀态開始播放 。否則為NO 。
讨論
如果設定為YES那麼當動畫在運作過程中,目前視圖的位置将會作為新的動畫的開始狀态 。如果設定為NO,目前動畫結束前新動畫将使用視圖最後狀态的位置作為開始狀态 。這個方法将不會做任何事情如果動畫沒有運作或者沒有在動畫塊外調用 。使用beginAnimations:context:類方法來開始并用 commitAnimations類方法來結束動畫塊 。預設值是NO 。
setAnimationCurve
:
設定動畫塊中的動畫屬性變化的曲線 。
- + (void)setAnimationCurve:(UIViewAnimationCurve)curve
讨論
動畫曲線是動畫運作過程中相對的速度 。如果在動畫塊外調用這個方法将會無效 。使用 beginAnimations:context:類方法來開始動畫塊并用commitAnimations來結束動畫塊 。預設動畫曲線的值是 UIViewAnimationCurveEaseInOut 。
setAnimationDelay:
在動畫塊中設定動畫的延遲屬性(以秒為機關)
- + (void)setAnimationDelay:(NSTimeInterval)delay
讨論
這個方法在動畫塊外調用無效 。使用beginAnimations:context: 類方法開始一個動畫塊并用commitAnimations類方法結束動畫塊 。預設的動畫延遲是0.0秒 。
setAnimationDelegate:
設定動畫消息的代理 。
- + (void)setAnimationDelegate:(id)delegate
參數
delegate
你可以用setAnimationWillStartSelector:和setAnimationDidStopSelector: 方法來設定接收代理消息的對象 。
讨論
這個方法在動畫塊外沒有任何效果 。使用beginAnimations:context:類方法開始一個動畫塊并用commitAnimations類方法結束一個動畫塊 。預設值是nil
setAnimationDidStopSelector:
設定消息給動畫代理當動畫停止的時候 。
- + (void)setAnimationDidStopSelector:(SEL)selector
參數
selector
當動畫結束的時候發送給動畫代理 。預設值是NULL 。這個選擇者須有下面方法的簽名:animationFinished:(NSString *)animationID finished:(BOOL)finished context:(void *)context 。
animationID
一個應用程式提供的辨別符 。和傳給beginAnimations:context: 相同的參數 。這個參數可以為空 。
finished
如果動畫在停止前完成那傳回YES;否則就是NO 。
context
一個可選的應用程式内容提供者 。和beginAnimations:context: 方法相同的參數 。可以為空 。
讨論
這個方法在動畫塊外沒有任何效果 。使用beginAnimations:context: 類方法來開始一個動畫塊并用commitAnimations類方法結束 。預設值是NULL 。
setAnimationDuration:
設定動畫塊中的動畫持續時間(用秒)
- + (void)setAnimationDuration:(NSTimeInterval)duration
參數
duration
一段動畫持續的時間。
讨論
這個方法在動畫塊外沒有效果。使用beginAnimations:context: 類方法來開始一個動畫塊并用commitAnimations類方法來結束一個動畫塊。預設值是0.2。
setAnimationRepeatAutoreverses:
設定動畫塊中的動畫效果是否自動重複播放。
- + (void)setAnimationRepeatAutoreverses:(BOOL)repeatAutoreverses
參數
repeatAutoreverses
如果動畫自動重複就是YES否則就是NO。
讨論
自動重複是當動畫向前播放結束後再重頭開始播放。使用setAnimationRepeatCount: 類方法來指定動畫自動重播的時間。如果重複數為0或者在動畫塊外那将沒有任何效果。使用beginAnimations:context:類方法來開始一個動畫塊并用commitAnimations方法來結束一個動畫塊。預設值是NO。
setAnimationRepeatCount:
設定動畫在動畫子產品中的重複次數
- + (void)setAnimationRepeatCount:(float)repeatCount
參數
repeatCount
動畫重複的次數,這個值可以是分數。
讨論
這個屬性在動畫塊外沒有任何作用。使用beginAnimations:context:類方法來開始一個動畫塊并用commitAnimations類方法來結束。預設動畫不循環。
setAnimationsEnabled:
設定是否激活動畫
- + (void)setAnimationsEnabled:(BOOL)enabled
參數
enabled
如果是YES那就激活動畫;否則就是NO
讨論
當動畫參數沒有被激活那麼動畫屬性的改變将被忽略。預設動畫是被激活的。
setAnimationStartDate:
設定在動畫塊内部動畫屬性改變的開始時間
- + (void)setAnimationStartDate:(NSDate *)startTime
參數
startTime
一個開始動畫的時間
讨論
使用beginAnimations:context:類方法來開始一個動畫塊并用commitAnimations類方法來結束動畫塊。預設的開始時間值由CFAbsoluteTimeGetCurrent方法來傳回。
setAnimationTransition:forView:cache:
在動畫塊中為視圖設定過渡
- + (void)setAnimationTransition:(UIViewAnimationTransition)transition forView:(UIView *)view cache:(BOOL)cache
參數
transition
把一個過渡效果應用到視圖中。可能的值定義在UIViewAnimationTransition中。有以下值:
typedef enum {
UIViewAnimationTransitionNone,
UIViewAnimationTransitionFlipFromLeft,
UIViewAnimationTransitionFlipFromRight,
UIViewAnimationTransitionCurlUp,
UIViewAnimationTransitionCurlDown,
} UIViewAnimationTransition;
view
需要過渡的視圖對象。
cache
如果是YES,那麼在開始和結束圖檔視圖渲染一次并在動畫中建立幀;否則,視圖将會在每一幀都渲染。例如緩存,你不需要在視圖轉變中不停的更新,你隻需要等到轉換完成再去更新視圖。
讨論
如果你想要在轉變過程中改變視圖的外貌。舉個例子,檔案從一個視圖到另一個視圖,然後使用一個UIView子類的容器視圖,如下:
- Begin an animation block.
- Set the transition on the container view.
- Remove the subview from the container view.
- Add the new subview to the container view.
- Commit the animation block.
1、開始一個動畫塊。
2、在容器視圖中設定轉換。
3、在容器視圖中移除子視圖。
4、在容器視圖中添加子視圖。
5、結束動畫塊。
setAnimationWillStartSelector:
當動畫開始時發送一條消息到動畫代理
- + (void)setAnimationWillStartSelector:(SEL)selector
參數
selector
在動畫開始前向動畫代理發送消息。預設值是NULL。這個selector必須由和beginAnimations:context: 方法相同的參數,一個任選的程式辨別和内容。這些參數都可以是nil。
讨論
這個方法在動畫塊外沒有任何作用。使用beginAnimations:context:類方法來開始一個動畫塊并用commitAnimations類方法來結束。
小結:詳解iPhone中UIView動畫各種表現方式 參考文檔的内容介紹完了,希望本文對你有所幫助!