iOS 動畫總結 UIView動畫

2021-09-08 09:13:42 字數 4903 閱讀 2513

1.概述

uikit直接將動畫整合到uiview類中,實現簡單動畫的建立過程。uiview類定義了幾個內在支援動畫的屬性宣告,當這些屬性發生改變時,檢視為其變化過程提供內建的動畫支援。

執行動畫所需要的工作由uiview類自動完成,但仍要在希望執行動畫時通知檢視,為此需要將改變屬性的**包裝到乙個**塊中。

2.uiview動畫具體建立方法

- (void)buttonpressed

- (void)viewdidload

有個問題:如果動畫不放在按鈕事件中,直接放到viewdidload裡,程式首先執行這個controller,這時動畫是不會顯示的。

原因:出現這個問題是因為開機時候系統有個動畫,系統動畫和這個動畫重複了。

解決方案:

1。將動畫寫在按鈕事件中

2。利用定時器。

**uiview動畫更具體講解;

areanimationsenabled

返回乙個布林值表示動畫是否結束。

+ (bool)areanimationsenabled

返回值如果動畫結束返回yes,否則no。

beginanimations:context:

開始乙個動畫塊

+ (void)beginanimations:(nsstring *)animationid context:(void *)context

引數animationid

動畫塊內部應用程式標識用來傳遞給動畫**訊息-這個選擇器運用setanimationwillstartselector:和setanimationdidstopselector: 方法來設定。

context

附加的應用程式資訊用來傳遞給動畫**訊息-這個選擇器使用setanimationwillstartselector: 和setanimationdidstopselector: 方法。

討論這個值改變是因為設定了一些需要在動畫塊中產生動畫的屬性。動畫塊可以被巢狀。如果在沒有在動畫塊中呼叫那麼setanimation類方法將什麼都不做。使用 beginanimations:context:來開始乙個動畫塊並用commitanimations類方法來結束乙個動畫塊。

commitanimations

layerclass

返回類用來建立這乙個本類的layer例項物件。

+ (class)layerclass

返回值乙個用來建立檢視layer的類

討論重寫子類來指定乙個自定義類用來顯示。當在建立檢視layer時候呼叫。預設的值是calayer類物件。

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。

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中。

view

需要過渡的檢視物件。

cache

如果是yes,那麼在開始和結束檢視渲染一次並在動畫中建立幀;否則,檢視將會在每一幀都渲染。例如快取,你不需要在檢視轉變中不停的更新,你只需要等到轉換完成再去更新檢視。

討論如果你想要在轉變過程中改變檢視的外貌。舉個例子,檔案從乙個檢視到另乙個檢視,然後使用乙個uiview子類的容器檢視,如下:

1.begin an animation block.

2.set the transition on the container view.

3.remove the subview from the container view.

4.add the new subview to the container view.

5.commit the animation block.

1.開始乙個動畫塊。 2.在容器檢視中設定轉換。 3.在容器檢視中移除子檢視。 4.在容器檢視中新增子檢視。 5.結束動畫塊。

setanimationwillstartselector:

當動畫開始時傳送一條訊息到動畫**

+ (void)setanimationwillstartselector:(sel)selector

引數selector

在動畫開始前向動畫**傳送訊息。預設值是null。這個selector必須由和beginanimations:context: 方法相同的引數,乙個任選的程式標識和內容。這些引數都可以是nil。

討論這個方法在動畫塊外沒有任何作用。使用beginanimations:context:類方法來開始乙個動畫塊並用commitanimations類方法來結束。

iOS 動畫總結 UIView動畫

1.概述 uikit直接將動畫整合到uiview類中,實現簡單動畫的建立過程。uiview類定義了幾個內在支援動畫的屬性宣告,當這些屬性發生改變時,檢視為其變化過程提供內建的動畫支援。執行動畫所需要的工作由uiview類自動完成,但仍要在希望執行動畫時通知檢視,為此需要將改變屬性的 包裝到乙個 塊中...

iOS 動畫總結 UIView動畫

1.概述 uikit直接將動畫整合到uiview類中,實現簡單動畫的建立過程。uiview類定義了幾個內在支援動畫的屬性宣告,當這些屬性發生改變時,檢視為其變化過程提供內建的動畫支援。執行動畫所需要的工作由uiview類自動完成,但仍要在希望執行動畫時通知檢視,為此需要將改變屬性的 包裝到乙個 塊中...

iOS 動畫總結 UIView動畫

1.概述 uikit直接將動畫整合到uiview類中,實現簡單動畫的建立過程。uiview類定義了幾個內在支援動畫的屬性宣告,當這些屬性發生改變時,檢視為其變化過程提供內建的動畫支援。執行動畫所需要的工作由uiview類自動完成,但仍要在希望執行動畫時通知檢視,為此需要將改變屬性的 包裝到乙個 塊中...