CAEmitterLayer:粒子发射图层,用于控制粒子展现范围,发射位置,发射形状,渲染模式等。
CAEmitterCell:粒子发射单元,对粒子系统中每个粒子做更加精细的控制。如粒子的移动速度,方向,范围。粒子单元都受到 CAEmitterLayer 图层的限制。
对于 CAEmitterLayer
和 CAEmitterCell
常用的属性,在下面的代码里有注释。
生成一个烛光火焰
func Createfire() {
let emitterCell = CAEmitterCell()
// xy 平面的发射角度
emitterCell.emissionLongitude = CGFloat(Double.pi)
// 每秒粒子创建的个数
emitterCell.birthRate = 50
// 粒子的生命周期
emitterCell.lifetime = 6.0
// 粒子的速度
emitterCell.velocity = -1
// 粒子的速度范围
emitterCell.velocityRange = 3
// 周围发射角度
emitterCell.emissionRange = 1.1
// y 轴加速度方向
emitterCell.yAcceleration = -1
// 缩放比例
emitterCell.scaleSpeed = 0.3
// 可以混合图片内容颜色的混合色
emitterCell.color = UIColor(red: 0.8, green: 0.4, blue: 0.2, alpha: 0.1).cgColor
// 粒子单元的内容
emitterCell.contents = UIImage(named: "fire")?.cgImage
let emitterLayer = CAEmitterLayer()
// 图层 frame
emitterLayer.frame = view.bounds
// 发射源位置
emitterLayer.emitterPosition = view.center
// 发射源大小
emitterLayer.emitterSize = CGSize(width: 3, height: 5)
// 渲染模式
emitterLayer.renderMode = kCAEmitterLayerAdditive
// 相对emitterShape粒子是如何创建的
emitterLayer.emitterMode = kCAEmitterLayerOutline
// 发射的形状
emitterLayer.emitterShape = kCAEmitterLayerLine
// 粒子单元
emitterLayer.emitterCells = [emitterCell]
view.layer.addSublayer(emitterLayer)
}