iOS開發UI篇 核心動畫 基礎動畫

2021-09-23 21:43:53 字數 3837 閱讀 7505

一、簡單介紹

capropertyanimation的子類

屬性解析:

fromvalue:keypath相應屬性的初始值

tovalue:keypath相應屬性的結束值

隨著動畫的進行,在長度為duration的持續時間內,keypath相應屬性的值從fromvalue漸漸地變為tovalue

如果fillmode=kcafillmodeforwards和removedoncomletion=no,那麼在動畫執行完畢後,圖層會保持顯示動畫執行後的狀態。但在實質上,圖層的屬性值還是動畫執行前的初始值,並沒有真正被改變。

比如,calayer的position初始值為(0,0),cabasicanimation的fromvalue為(10,10),tovalue為(100,100),雖然動畫執行完畢後圖層保持在(100,100)這個位置,實質上圖層的position還是為(0,0)

二、平移動畫

**示例:

1//2

07-核心動畫(基礎動畫)4//

5//6//

7//89

#import

"yyviewcontroller.h"10

11@inte***ce yyviewcontroller ()

12 @property(nonatomic,strong)calayer *mylayer;

13@end

1415

@implementation yyviewcontroller

1617 - (void)viewdidload

18 33

34//

設定動畫(基礎動畫)

35 -(void)touchesbegan:(nsset *)touches withevent:(uievent *)event

36 @end

**說明:

第42行設定的keypath是@"position",說明要修改的是calayer的position屬性,也就是會執行平移動畫

第44,45行,這裡的屬性接收的時id型別的引數,因此並不能直接使用cgpoint這種結構體型別,而是要先包裝成nsvalue物件後再使用。

預設情況下,動畫執行完畢後,動畫會自動從calayer上移除,calayer又會回到原來的狀態。為了保持動畫執行後的狀態,可以加入第48,50行**

byvalue和tovalue的區別,前者是在當前的位置上增加多少,後者是到指定的位置。

執行效果:

**示例:

1

#import

"yyviewcontroller.h"2

3@inte***ce yyviewcontroller ()

4 @property(nonatomic,strong)calayer *mylayer;

5@end67

@implementation yyviewcontroller

89 - (void)viewdidload

10 25

26//

設定動畫(基礎動畫)

27 -(void)touchesbegan:(nsset *)touches withevent:(uievent *)event

28 52

53 -(void)animationdidstart:(caanimation *)anim

54 57

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

59 64

65@end

列印position的屬性值,驗證圖層的屬性值還是動畫執行前的初始值,並沒有真正被改變為。

三、縮放動畫

實現縮放動畫的**示例:

1//2

08-核心動畫平移4//

5//6//

7//89

#import

"yyviewcontroller.h"10

11@inte***ce yyviewcontroller ()

12 @property(nonatomic,strong)calayer *mylayer;

13@end

1415

@implementation yyviewcontroller

1617 - (void)viewdidload

18 33

34 -(void)touchesbegan:(nsset *)touches withevent:(uievent *)event

35 49

50@end

實現效果:

四、旋轉動畫

**示例:

1//2

09-核心動畫旋轉4//

5//6//

7//89

#import

"yyviewcontroller.h"10

11@inte***ce yyviewcontroller ()

12 @property(nonatomic,strong)calayer *mylayer;

13@end

1415

@implementation yyviewcontroller

16 - (void)viewdidload

17 32

33 -(void)touchesbegan:(nsset *)touches withevent:(uievent *)event

34 49

@end

實現效果:

anima.tovalue=[nsvalue valuewithcatransform3d:catransform3dmakerotation(m_pi_2+m_pi_4, 1, 1, 0)];

四、補充

可以通過transform(kvc)的方式來進行設定。

**示例(平移):

1

#import

"yyviewcontroller.h"2

3@inte***ce yyviewcontroller ()

4 @property(nonatomic,strong)calayer *mylayer;

5@end67

@implementation yyviewcontroller

8 - (void)viewdidload

9 24

25 -(void)touchesbegan:(nsset *)touches withevent:(uievent *)event

26

實現效果:

繪製的圖形在y的方向上移動100個單位。

iOS開發UI篇 核心動畫 基礎動畫

一 簡單介紹 capropertyanimation的子類 屬性解析 list fromvalue keypath相應屬性的初始值 tovalue keypath相應屬性的結束值 list 隨著動畫的進行,在長度為duration的持續時間內,keypath相應屬性的值從fromvalue漸漸地變為...

OS開發UI篇 核心動畫 基礎動畫

文頂頂 ios開發ui篇 核心動畫 基礎動畫 一 簡單介紹 capropertyanimation的子類 屬性解析 fromvalue keypath相應屬性的初始值 tovalue keypath相應屬性的結束值 隨著動畫的進行,在長度為duration的持續時間內,keypath相應屬性的值從f...

IOS開發核心動畫篇 核心動畫簡介

ios開發ui篇 核心動畫簡介 一 簡單介紹 core animation,中文翻譯為核心動畫,它是一組非常強大的動畫處理api,使用它能做出非常炫麗的動畫效果,而且往往是事半功倍。也就是說,使用少量的 就可以實現非常強大的功能。core animation是跨平台的,可以用在mac os x和io...