1.使用到的類
1
2
3
4
5
cakeyframeanimation
// 核心動畫-關鍵幀動畫
caemitterlayer
// 粒子發射器(其實就是乙個layer,其父類是calayer)
caemittercell
// 粒子
ps:核心動畫應該不用多說了;
caemitterlayer和caemittercell,其實可以比喻成「炮」和「炮彈」,應該不難理解;
2.直接上部分關鍵** **中會有詳細的注釋
2.1 .m中需要擁有的屬性
1
2
/** weak型別 粒子發射器 */
@property (nonatomic, weak) caemitterlayer *emitterlayer;
2.2initwithframe:
方法中
1
2
3
4
5
6
7
8
- (instancetype)initwithframe:(cgrect)frame
return
self;
}
2.3setselected:
方法中
1
2
3
4
5
- (void)setselected:(bool)selected
2.4layoutsubviews
方法中
1
2
3
4
5
- (void)layoutsubviews
2.5setupemitter
方法中( 配置粒子發射器方法 )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
- (void)setup
ps:這裡有一點需要詳細解釋一下,caemittercell
的屬性一般有兩個引數:乙個平均值和乙個「range」,比如:
1
2
3
// 粒子的生命週期和生命週期範圍
emittercell.lifetime = 0.7;
emittercell.lifetimerange = 0.3;
這裡蘋果的官方文件是這樣解釋的:
1
2
3
4
5
6
7
8
每乙個layer都有它自己的隨機數發生器,粒子的屬性大部分都被定義為乙個平均值和乙個範圍值,
如粒子的速度,這個屬性的值分布的區間為:[ m - r / 2,m + r / 2 ]。
然後 這個公式裡面
m:均值(拿上面**說就是 emittercell.lifetime)
r:範圍值(mittercell.lifetimerange)
然後我們就可根據公式算出上面我設定的粒子的生命週期的範圍是[0.7-0.3/2 , 0.7+0.3/2]
2.6keyframeanimation
方法中 (開始關鍵幀動畫)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
- (void)animation
else
// 動畫模式
animation.calculationmode = kcaanimationcubic;
[self.imageview.layer addanimation:animation forkey:@
"transform.scale"
];
}
這段**沒什麼說的,應該很容易理解。
2.7startfire
方法中 (開炮)
1
2
3
4
5
6
7
8
9
- (void)startfire
2.8stopfire
方法中 (停火)
1
2
3
4
- (void)stopfire
最後放兩張效果圖
iOS開發核心動畫之粒子效果
一.示意圖 繪畫出一條線,點選開始有很多粒子繞著線運動,點選重繪消除粒子和線 二.實現 設計思路 自定義乙個view來描述控制器的view,在view載入過程中進行初始化,給view新增手勢 uipangesturerecognizer 將自定義view轉成複製層,建立乙個粒子層,新增到複製層上,並...
IOS核心動畫
void basicanimation calayer layer animation.duration 2 animation.delegate self animation.removedoncompletion no animation.fillmode kcafillmodeforwards...
IOS開發核心動畫篇 核心動畫簡介
ios開發ui篇 核心動畫簡介 一 簡單介紹 core animation,中文翻譯為核心動畫,它是一組非常強大的動畫處理api,使用它能做出非常炫麗的動畫效果,而且往往是事半功倍。也就是說,使用少量的 就可以實現非常強大的功能。core animation是跨平台的,可以用在mac os x和io...