iOS中的UIView動畫

2021-07-02 15:04:59 字數 4592 閱讀 1332

1.uikit直接將動畫整合到uiview類中,當內部的一些屬性發生改變

時,uiview將為這些改變提供動畫支援 

2.執行動畫所需要的工作由uiview類自動完成,但仍要在希望執行動畫時通知檢視,為此需要將改變屬性的**放在[uiview beginanimations:nil context:nil]和[uiview commitanimations]之間:

[uiview beginanimations:nil context:nil];

// ...(需要執行動畫的**)

[uiview commitanimations];

3.uiview動畫常見方法解析:

+ (void)setanimationdelegate:(id)delegate

設定動畫**物件,當動畫開始或者結束時會發訊息給**物件
+ (void)setanimationwillstartselector:(sel)selector

當動畫即將開始時,執行delegate物件的selector,並且把beginanimations:context:中傳入的引數傳進selector

+ (void)setanimationdidstopselector:(sel)selector

當動畫結束時,執行delegate物件的selector,並且把beginanimations:context:中傳入的引數傳進selector 

+ (void)setanimationduration:(nstimeinterval)duration動畫的持續時間,秒為單位

+ (void)setanimationdelay:(nstimeinterval)delay動畫延遲delay秒後再開始

+ (void)setanimationstartdate:(nsdate *)startdate

動畫的開始時間,預設為now

+ (void)setanimationcurve:(uiviewanimationcurve)curve

動畫的節奏控制

+ (void)setanimationrepeatcount:(float)repeatcount

動畫的重複次數

+ (void)setanimationrepeatautoreverses:(bool)repeatautoreverses

如果設定為yes,代表動畫每次重複執行的效果會跟上一次相反 

+(void)setanimationtransition:(uiviewanimationtransition)transition forview:(uiview*)view cache:(bool)cache

設定檢視view的過渡效果, transition指定過渡型別, cache設定yes代表使用檢視快取,效能較好 

uiview的block動畫:

+ (void)animatewithduration:(nstimeinterval)duration delay:(nstimeinterval)delay options:(uiviewanimationoptions)options animations:(void (^)(void))animations completion:(void (^)(boolfinished))completion

引數解析:

duration:動畫的持續時間

delay:動畫延遲delay秒後開始

options:動畫的節奏控制

animations:將改變檢視屬性的**放在這個block中

completion:動畫結束後,會自動調⽤用這個block 

+ (void)transitionwithview:(uiview *)view duration:(nstimeinterval)duration options:(uiviewanimationoptions)options animations:(void (^)(void))animations completion:(void (^)(boolfinished))completion

引數解析:

duration:動畫的持續時間

view:需要進⾏行轉場動畫的檢視

options:轉場動畫的型別

animations:將改變檢視屬性的**放在這個block中

completion:動畫結束後,會自動呼叫這個block 

+ (void)transitionfromview:(uiview *)fromview toview:(uiview *)toview duration:(nstimeinterval)durationoptions:(uiviewanimationoptions)options completion:(void(^)(bool finished))completion

方法呼叫完畢後,相當於執行了下面兩句**:

// 新增toview到父檢視

[fromview.superview addsubview:toview];

// 把fromview從父檢視中移除[fromview.superview removefromsuperview];

引數解析:

duration:動畫的持續時間

options:轉場動畫的型別

animations:將改變檢視屬性的**放在這個block中

completion:動畫結束後,會自動呼叫這個block 

接下來是乙個demo,演示了圖層動畫和uiview動畫的不同之處,以及如何使用uiview動畫做轉場效果:

效果圖:

核心**:

//

// jlviewcontroller.m

// uiview封裝的動畫

//// created by mac on 15-5-16.

//#import "jlviewcontroller.h"

@inte***ce jlviewcontroller ()

@property (weak, nonatomic) iboutlet uiimageview *imageview;

- (ibaction)testlayeranim;

- (ibaction)testuiviewanim;

- (ibaction)next;

@property (nonatomic, assign)int index;

@end

@implementation jlviewcontroller

- (void)viewdidload

/** * 使用uiview做轉場動畫

}/***********************************測試uiview動畫begin********************************************/

////// 由該測試可知:

/// 我們修改了imageview的center屬性的值,從列印結果可知,uiview動畫會真正改變center屬性的值。

///- (ibaction)testuiviewanim completion:^(bool finished) ];

}/***********************************測試uiview動畫begin********************************************/

/***********************************測試圖層動畫begin********************************************/

////// 由該測試可知,圖層動畫都是假象。

/// 我們修改了layer的position屬性的值,但從**方法的列印結果可知

/// 即使加上了

/// anim.removedoncompletion = no;

/// anim.fillmode = kcafillmodeforwards;

/// layer的position屬性依然沒有改變。

///- (ibaction)testlayeranim

/***********************************測試圖層動畫end********************************************/

/** * **方法。動畫結束時會呼叫

*/- (void)animationdidstop:(caanimation *)anim finished:(bool)flag

@end

iOS 動畫 UIView動畫

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

ios中UIView應用動畫

一.uiview應用動畫 初始化乙個初始 uiimage startimage uiimage imagenamed starttarget.jpeg 初始化開始頁面 self.startview uiimageview alloc initwithimage startimage 設定頁面位置 s...

iOS 動畫總結 UIView動畫

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