UIView 實現動畫

2022-04-17 20:07:28 字數 2004 閱讀 6925

動畫為使用者介面在不同狀態之間的遷移過程提供流暢的視覺效果。在iphone

類中,以簡化動畫的建立過程。

—也就是說,當這些屬性值發生變化時,檢視為其變化過程提供內建的動畫支援。雖然執行動畫所需要的工作由uiview類自動完成,但您仍然必須在希望執行動畫時通知檢視。為此,您需要將改變給定屬性的**包裝在乙個動畫塊中。

類方法作為結束。在這兩個呼叫之間,您可以配置動畫的引數和改變希望實行動畫的屬性值。一旦呼叫commitanimations方法,uikit就會開始執行動畫,即把給定屬性從當前值到新值的變化過程用動畫表現出來。動畫塊可以被巢狀,但是在最外層的動畫塊提交之前,被巢狀的動畫不會被執行。

表2-2列舉了uiview類中支援動畫的屬性。

表2-2 

支援動畫的屬性

屬性描述

frame

檢視的邊框矩形,位於父檢視的座標系中。

bounds

檢視的邊界矩形,位於檢視的座標系中。

center

邊框的中心,位於父檢視的座標系中。

transform

檢視上的轉換矩陣,相對於檢視邊界的中心。

alpha

檢視的alpha值,用於確定檢視的透明度。

配置動畫的引數

除了在動畫塊中改變屬性值之外,您還可以對其它引數進行配置,以確定您希望得到的動畫行為。為此,您可以呼叫下面這些uiview的類方法:

方法來設定動畫在commitanimations方法返回之後的發生日期。預設行為是使動畫立即在動畫執行緒中執行。

方法來設定實際發生動畫和commitanimations方法返回的時間點之間的間隔。

方法來設定動畫持續的秒數。

方法來設定動畫過程的相對速度,比如動畫可能在啟示階段逐漸加速,而在結束階段逐漸減速,或者整個過程都保持相同的速度。

方法來設定動畫的重複次數。

commitanimations類方法在呼叫之後和動畫開始之前立刻返回。uikit在乙個獨立的、和應用程式的主事件迴圈分離的執行緒中執行動畫。commitanimations方法將動畫傳送到該執行緒,然後動畫就進入執行緒中的佇列,直到被執行。預設情況下,只有在當前正在執行的動畫塊執行完成後,core

類方法傳入yes來過載這個行為,使動畫立即啟動。這樣做會停止當前正在執行的動畫,而使新動畫在當前狀態下開始執行。

方法來暫時禁止動畫,在完成修改後才重新啟用動畫。在呼叫setanimationsenabled:方法並傳入no值之後,所有的改變都不會產生動畫效果,直到用yes值再次呼叫這個方法或者提交整個動畫塊時,動畫才會恢復。您可以用areanimationsenabled方法來確定當前是否啟用動畫。

配置動畫的委託

方法來指定接收訊息的選擇器方法。訊息處理方法的形式如下:

- (void)animationwillstart:(nsstring *)animationid context:(void *)context;

- (void)animationdidstop:(nsstring *)animationid finished:(nsnumber *)finished context:(void *)context;

上面兩個方法的animationid和context引數和動畫塊開始時傳給beginanimations:context:方法的引數相同:

setanimationdidstopselector:選擇器方法還有乙個引數—即乙個布林值。如果動畫順利完成,沒有被其它動畫取消或停止,則該值為yes

UIView實現動畫效果

uiview類的很多屬性都設計為動畫,動畫的屬性是指當屬性從乙個值變成另外乙個值時可以支援動畫,同時通知uikit需要執行什麼樣型別的動畫,uiview物件支援動畫的屬性有如下幾個 frame屬性 可以使用該屬性改變尺寸和位置 bounds 改變尺寸 center 改變檢視的位置 alpha 改變檢...

iOS 動畫 UIView動畫

viewcontroller.m ui 23 動畫 import viewcontroller.h inte ce viewcontroller property strong,nonatomic iboutlet uiview opeview1 property strong,nonatomic ...

動畫之UIView動畫

uiview有三種型別的動畫 它是對uiview的屬性進行動畫的一種方法,能進行動畫顯示的動畫包括 位置和大小 bounds frame center 背景與透明 backgroundcolor alpha 轉換 transform 它包括一種特殊很炫的動畫形式 彈簧動畫usingspringwit...