CAEmitterLayer實現雪花效果

2022-08-05 05:21:16 字數 1317 閱讀 3327

如果大家突然需要乙個雪花效果,我相信大部分人的第一反應是使用定時器建立大量的imageview物件,然後給每個imageview物件新增動畫。這種做法一方面操作複雜,一方面效能方面堪憂.既然現在大家都了解了caemitterlayer引擎,因此下面使用caemitterlayer引擎實現這個效果,看下其的便捷性和效能方面的優勢。

caemitterlayer *emitter = [caemitterlayer layer];

emitter.frame = self.view.bounds;

[self.containerview.layer addsublayer:emitter];

emitter.rendermode = kcaemitterlayeradditive;

emitter.emitterposition = cgpointmake(emitter.frame.size.width / 3.0, -75);

該layer的建立方式與基本calayer層沒什麼區別,區別在於屬性,下面將會簡要介紹:

注意:caemitterlayer的屬性控制著整個粒子系統的位置和形狀,一些屬性比如birthrate在粒子模板中也有。這些屬性會以相乘的方式作用在一起。

caemittercell *cell = [[caemittercell alloc] init];

cell.contents = (__bridge id)[uiimage imagenamed:@"面板_雪花"].cgimage;

cell.birthrate = 5;

cell.lifetime =7.0 ;

cell.alphaspeed = 0;

cell.velocity = 150;

cell.velocityrange = 100;

cell.emissionlongitude = m_pi / 2;

cell.emissionrange = m_pi /2 ;

emitter.emittercells = @[cell];

值得一提的屬性如下介紹:

我們按照上面的方法建立兩個發射源,放在檢視的頂部,設定雪花飄落的範圍與方向,然後給檢視配置乙個美感的背景圖,就可以實現乙個雪花效果了。而且,我們做的工作其實很少,效能也有大大的提高。不多說,看效果

CAEmitterLayer 粒子效果

caemitterlayer執行在gpu上,不消耗cpu。建立出layer caemitterlayer emitterlayer caemitterlayer layer 顯示邊框 emitterlayer.borderwidth 1.f emitterlayer.bordercolor uico...

CAEmitterLayer屬性介紹

在ios 5中,蘋果引入了乙個新的calayer子類叫做caemitterlayer。caemitterlayer是乙個高效能的粒子引擎,被用來建立實時例子動畫如 煙霧,火,雨等等這些效果.caemitterlayer 粒子發射器 屬性 emitterposition 發射位置 cgpoint em...

CAEmitterLayer實現粒子效果

caemitterlayer實現粒子效果 caemitterlayer 在ios 5中,蘋果引入了乙個新的 calayer 子類叫做 caemitterlayer caemitterlayer 是乙個高效能的粒子引擎,被用來建立實時例子動畫如 煙霧,火,雨等等這些效果。caemitterlayer ...