iOS粒子動(dòng)畫CAEmitterLayer

CAEmitterLayer

CAEmitterLayer是CALayer的子類,CAEmitterLayer是用于實(shí)現(xiàn)基于Core Animation的粒子發(fā)生器系統(tǒng),可以用來做一些酷炫的效果,而CAEmitterCell就是CAEmitterLayer中發(fā)射的具體的粒子了。比如紅包雨,下雨的效果都可以用CAEmitterLayer效果實(shí)現(xiàn)。

CAEmitterLayer屬性
CGSize emitterSize  發(fā)射源的尺寸大小,動(dòng)畫顯示的范圍
CAEmitterLayerEmitterShape emitterShape
/*  發(fā)射源的形狀
kCAEmitterLayerPoint       點(diǎn)的形狀,粒子從一個(gè)點(diǎn)發(fā)出
kCAEmitterLayerLine        線的形狀,粒子從一條線發(fā)出
kCAEmitterLayerRectangle   矩形形狀,粒子從一個(gè)矩形中發(fā)出
kCAEmitterLayerCuboid      立方體形狀,這里要生效的話需要設(shè)置z方向的數(shù)據(jù),如果不設(shè)置就同矩形狀
kCAEmitterLayerCircle      圓形,粒子會(huì)在圓形范圍發(fā)射
kCAEmitterLayerSphere      立體圓形(3D),三維的圓形,同樣需要設(shè)置z方向數(shù)據(jù),不設(shè)置則通二維一樣
*/
CAEmitterLayerEmitterMode emitterMode
/* 發(fā)射模式
kCAEmitterLayerPoints      從發(fā)射器中發(fā)出
kCAEmitterLayerOutline     從發(fā)射器邊緣發(fā)出
kCAEmitterLayerSurface     從發(fā)射器表面發(fā)出
kCAEmitterLayerVolume      相對(duì)于3D形狀的“球體內(nèi)”或“立方體內(nèi)”發(fā)射,從發(fā)射器中點(diǎn)發(fā)出
*/
CAEmitterLayerRenderMode renderMode
/*顯示模式
kCAEmitterLayerUnordered    粒子是無序出現(xiàn)的,多個(gè)發(fā)射源將混合
kCAEmitterLayerOldestFirst  聲明久的粒子會(huì)被渲染在最上層
kCAEmitterLayerOldestLast   剛開始的粒子會(huì)被渲染在最上層
kCAEmitterLayerBackToFront  粒子的渲染按照Z軸的前后順序進(jìn)行
kCAEmitterLayerAdditive     這種模式會(huì)進(jìn)行粒子混合
*/
CGPoint emitterPosition  粒子發(fā)射形狀的中心點(diǎn)
NSArray<CAEmitterCell *> *emitterCells  具體發(fā)射的粒子
CAEmitterCell
+ (instancetype)emitterCell  初始化方法
+ (nullable id)defaultValueForKey:(NSString *)key;//獲取某一屬性的值
- (BOOL)shouldArchiveValueForKey:(NSString *)key;//返回指定的屬性值是否可以歸檔?;旧喜挥?@property(nullable, copy) NSString *name;//設(shè)置發(fā)射粒子的名稱
@property(getter=isEnabled) BOOL enabled;//是否允許發(fā)射粒子渲染
@property float birthRate;//發(fā)射粒子的產(chǎn)生率,默認(rèn)0
@property float lifetime;//發(fā)射粒子的生命周期,以秒為單位。默認(rèn)0
@property float lifetimeRange;//發(fā)射粒子的生命周期范圍,以秒為單位。默認(rèn)0
@property CGFloat emissionLatitude;//發(fā)射粒子的指定緯度,緯度角代表了在x-z軸平面坐標(biāo)系中與x軸之間的夾角,也就是粒子在Z軸方向的發(fā)射角度,默認(rèn)0
@property CGFloat emissionLongitude;//發(fā)射粒子的指定經(jīng)度,經(jīng)度角代表了在x-y軸平面坐標(biāo)系中與x軸之間的夾角,也就是粒子在xy平面的發(fā)射角度,默認(rèn)0:
@property CGFloat emissionRange;//發(fā)射粒子角度范圍,默認(rèn)0,以錐形分布開的發(fā)射角度。角度用弧度制。粒子均勻分布在這個(gè)錐形范圍內(nèi);
@property CGFloat velocity;//發(fā)射粒子的速度 ,默認(rèn)0
@property CGFloat velocityRange;//發(fā)射粒子的速度范圍 ,默認(rèn)0
@property CGFloat xAcceleration;//發(fā)射粒子x方向的加速度,默認(rèn)0
@property CGFloat yAcceleration;//發(fā)射粒子y方向的加速度,默0
@property CGFloat zAcceleration;//發(fā)射粒子z方向的加速度,默認(rèn)0
@property CGFloat scale;//發(fā)射粒子的縮放系數(shù),默認(rèn)1
@property CGFloat scaleRange;//發(fā)射粒子的縮放系數(shù)范圍,默認(rèn)0
@property CGFloat scaleSpeed;//發(fā)射粒子的縮放速度,默認(rèn)0
@property CGFloat spin;//發(fā)射粒子的平均旋轉(zhuǎn)速度,默認(rèn)是0
@property CGFloat spinRange;//發(fā)射粒子的平均旋轉(zhuǎn)速度范圍,默認(rèn)是0
@property(nullable) CGColorRef color;//發(fā)射粒子的顏色,默認(rèn)白色
@property float redRange;//發(fā)射粒子紅色的范圍,默認(rèn)0
@property float greenRange;//發(fā)射粒子綠色的范圍,默認(rèn)0
@property float blueRange;//發(fā)射粒子藍(lán)色的范圍,默認(rèn)0
@property float alphaRange;//發(fā)射粒子透明度的范圍,默認(rèn)0
@property float redSpeed;//發(fā)射粒子紅色的變化速度,默認(rèn)0
@property float greenSpeed;//發(fā)射粒子綠色的變化速度,默認(rèn)0
@property float blueSpeed;//發(fā)射粒子藍(lán)色的變化速度,默認(rèn)0
@property float alphaSpeed;//發(fā)射粒子透明度的變化速度,默認(rèn)0
@property(nullable, strong) id contents;//發(fā)射的渲染粒子的內(nèi)容,可以設(shè)置為一個(gè)CGImage的對(duì)象
@property CGRect contentsRect;//發(fā)射的渲染粒子內(nèi)容的渲染范圍
@property CGFloat contentsScale;//內(nèi)容的縮放系數(shù)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容