从iOS5开始,苹果引入了CAEmitterLayer,CAEmitterLayer是一个高性能的粒子引擎,被用来创建实时例子动画如:烟雾,火,雨,雪花等等这些效果。
粒子效果组成有2部分,一个是发射器,是CALayer的子类,另一个是粒子单元CAEmitterCell。
CAEmitterLayer像是许多CAEmitterCell的容器,每个CAEmitterCell定义了一种粒子效果
CAEmitterLayer 常用的属性如下:
* open var emitterCells: [CAEmitterCell]?
粒子单元数组,例如你在绘制火焰的效果时,你可以创建两个单元,一个单元负责烟雾,一个单元负责火苗。
-
open var birthRate: Float
粒子创建的速率,默认是1s
-
open var lifetime: Float
粒子的生命周期,存活的时间,默认为1s
-
open var emitterPosition: CGPoint
发射点在xy平面的中心位置
-
open var emitterZPosition: CGFloat
发射点在z平面的中心位置
-
open var emitterSize: CGSize
发射器的大小
-
open var emitterDepth: CGFloat
发射器的深度,在某些模式下会产生立体效果
* open var emitterShape: String
发射器的形状,(point:line', `rectangle', `circle', `cuboid' )
point: 粒子从一个点发出
line : 粒子从一条线发出
rectangle : 矩形
circle : 圆形
cuboid:立方体,会影响Z
* open var renderMode: String
渲染模式
`unordered' : 无序出现的,多个发射源将混合
`oldestFirst' : 老的粒子会被渲染在最上层
`oldestLast' : 后产生的粒子会被渲染在最上层
`backToFront' : 按照Z轴的前后顺序进行
`additive` : 进行粒子混合
* open var scale: Float
缩放大小
* open var spin: Float
默认是1,粒子的旋转位置
CAEmitterCell 常用的属性如下:
* + (instancetype)emitterCell;
实例化粒子
* open var name: String?
* open var isEnabled: Bool
控制cell是否被渲染
* open var birthRate: Float
粒子创建的速率,默认是0
* open var lifetime: Float
生命周期
* open var lifetimeRange: Float
生存的时间容差 ,实际存活时间是 lifetime + lifetimeRange
* open var xAcceleration: CGFloat
open var yAcceleration: CGFloat
-
open var zAcceleration: CGFloat
x,y,z 加速度
* open var scale: CGFloat 缩放大小
open var scaleRange: CGFloat 缩放的大小范围
open var scaleSpeed: CGFloat 缩放的速度
* open var spin: CGFloat 旋转的速度
* open var spinRange: CGFloat
-
open var contents: Any?
渲染粒子,可以设置为一个CGImage的对象