iOS CAEmitterLayer

相關(guān)資源

GitHub粒子發(fā)射和復(fù)制圖層示例
GitHub粘性控件示例
GitHub彈性動(dòng)畫
CALayer分析
響應(yīng)者手勢分析

簡介

繼承自CALayer,隸屬于QuartzCore,這是一個(gè)發(fā)射粒子(particle)、給粒子動(dòng)畫、渲染(繪畫)粒子的圖層。
粒子(particle,CAEmitterCell的實(shí)例)被繪制在圖層的背景顏色和邊框之上。

屬性

/* 粒子單元數(shù)組,每一個(gè)單元 CAEmitterCell 類型 */
@property(nullable, copy) NSArray<CAEmitterCell *> *emitterCells;

/* 每秒鐘粒子單元?jiǎng)?chuàng)建粒子(particle)的個(gè)數(shù) */
@property float birthRate;

/* 粒子(particle)存在時(shí)間  */
@property float lifetime;

/* 發(fā)射器在xy平面的中心位置,默認(rèn)(0,0)*/
@property CGPoint emitterPosition;
/* 發(fā)射器在Z平面的位置,默認(rèn)是0 */
@property CGFloat emitterZPosition;

/*發(fā)射器的尺寸大小和景深深度,根據(jù)emitterShape的情況,有些效果可能無效*/
@property CGSize emitterSize;
@property CGFloat emitterDepth;

/* 定義發(fā)射形狀,字符串類型,決定粒子的出口形態(tài),系統(tǒng)會在emitterSize上進(jìn)行修飾處理。可選項(xiàng)如下:
kCAEmitterLayerPoint 點(diǎn)的形狀 ,粒子從一個(gè)點(diǎn)發(fā)出
kCAEmitterLayerLine 線的形狀,粒子從一條線發(fā)出
kCAEmitterLayerRectangle 矩形形狀,粒子從一個(gè)矩形中發(fā)出
kCAEmitterLayerCuboid 立方體形狀,會影響Z平面的效果
kCAEmitterLayerCircle 圓形,粒子會在圓形范圍發(fā)射
kCAEmitterLayerSphere 球型
 */
@property(copy) NSString *emitterShape;

/*定義發(fā)射模式(相對于emitterShape,只會展示不同的效果),字符串類型。
kCAEmitterLayerPoints 從發(fā)射器兩端點(diǎn)
kCAEmitterLayerOutline 從發(fā)射器邊緣發(fā)出 
kCAEmitterLayerSurface 從發(fā)射器表面發(fā)出
kCAEmitterLayerVolume 從發(fā)射器中發(fā)出
 */
@property(copy) NSString *emitterMode;

/* 定義渲染模式,字符串類型。
kCAEmitterLayerUnordered 粒子是無序出現(xiàn)的
kCAEmitterLayerOldestFirst 聲明久的粒子會被渲染在最上層
kCAEmitterLayerOldestLast 年輕的粒子會被渲染在最上層
kCAEmitterLayerBackToFront 粒子的渲染按照Z軸的前后順序進(jìn)行
kCAEmitterLayerAdditive 進(jìn)行粒子混合
*/
@property(copy) NSString *renderMode;

/* 是否開啟三維空間效果 ,默認(rèn)是NO*/
@property BOOL preservesDepth;

/* 增加粒子的速度,默認(rèn)是1. */

@property float velocity;

/* 粒子的縮放大小,默認(rèn)是1 */
@property float scale;

/* 粒子的旋轉(zhuǎn)位置 */
@property float spin;

CAEmitterCell介紹

一些屬性可以參考CAEmitterLayer(優(yōu)先級高于CAEmitterCell)

/* 單元名稱,用于構(gòu)造keyPath,默認(rèn)為空 */
@property(nullable, copy) NSString *name;

/* 控制此單元是否被emmiter渲染 */
@property(getter=isEnabled) BOOL enabled;

/* 粒子的創(chuàng)建速率 ,默認(rèn)為0*/
@property float birthRate;

/* 粒子的生存時(shí)間,單位是秒,lifetime是個(gè)平均值(mean),默認(rèn)值0;lifetimeRange描述的是粒子的生存時(shí)間容差 ,默認(rèn)值0*/
@property float lifetime;
@property float lifetimeRange;

/*粒子在Z軸方向的發(fā)射角度(弧度制)和 粒子在xy平面的發(fā)射角度(弧度制)*/
@property CGFloat emissionLatitude;
@property CGFloat emissionLongitude;
/*粒子發(fā)射角度的容差(弧度制)*/
@property CGFloat emissionRange;

/* 粒子發(fā)射的速度和速度容差,默認(rèn)都是0 */
@property CGFloat velocity;
@property CGFloat velocityRange;

/* 三個(gè)方向的加速度矢量 Defaults to
 * (0, 0, 0) */
@property CGFloat xAcceleration;
@property CGFloat yAcceleration;
@property CGFloat zAcceleration;

/* 粒子的縮放因子(系數(shù),平均值),默認(rèn)1;縮放因子容差,默認(rèn)是0;縮放速度 */
@property CGFloat scale;
@property CGFloat scaleRange;
@property CGFloat scaleSpeed;

/* 粒子旋轉(zhuǎn)速度,和旋轉(zhuǎn)速度容差 */
@property CGFloat spin;
@property CGFloat spinRange;

/* 粒子顏色,默認(rèn)值是 純白;每個(gè)通道的色值容差,默認(rèn)是(0, 0, 0,  0) */
@property(nullable) CGColorRef color;
@property float redRange;
@property float greenRange;
@property float blueRange;
@property float alphaRange;

/* 粒子每個(gè)顏色的變化速度(在lifetime期間),默認(rèn)值 (0, 0, 0, 0) */
@property float redSpeed;
@property float greenSpeed;
@property float blueSpeed;
@property float alphaSpeed;

/* 粒子的內(nèi)容 */
@property(nullable, strong) id contents;

/* 使用(渲染)內(nèi)容的范圍 默認(rèn)值是矩陣 [0 0 1 1] */
@property CGRect contentsRect;

/* 內(nèi)容縮放因子 */
@property CGFloat contentsScale;

簡單示例

emitter0.png

emitter1.png

emitter2.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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