Skip to content

Instantly share code, notes, and snippets.

@victorchee
Created December 29, 2018 06:11
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save victorchee/f44e968d8ea211bdf97d2da465fa68c5 to your computer and use it in GitHub Desktop.
Save victorchee/f44e968d8ea211bdf97d2da465fa68c5 to your computer and use it in GitHub Desktop.
Fireworks effect by emitter.
let emitterLayer = CAEmitterLayer()
emitterLayer.frame = navigationView.bounds
emitterLayer.renderMode = .additive
emitterLayer.emitterMode = .outline
emitterLayer.emitterShape = .line
emitterLayer.emitterSize = CGSize(width: 50, height: 0)
emitterLayer.emitterPosition = CGPoint(x: navigationView.bounds.width / 2, y: navigationView.bounds.height)
emitterLayer.velocity = 1
emitterLayer.seed = (arc4random() % 100) + 1
navigationView.layer.insertSublayer(emitterLayer, at: 0)
let cell = CAEmitterCell()
cell.contents = UIImage(named: "triangle1")?.cgImage
cell.birthRate = 1
cell.emissionRange = 0.11 * CGFloat.pi
cell.velocity = 100
cell.velocityRange = 150
cell.yAcceleration = 75
cell.lifetime = 2.04
cell.scale = 0.2
cell.color = UIColor(red: 0.5, green: 0.5, blue: 0.5, alpha: 1).cgColor
cell.greenRange = 1
cell.redRange = 1
cell.blueRange = 1
cell.spinRange = CGFloat.pi
let burst = CAEmitterCell()
burst.birthRate = 1
burst.velocity = 0
burst.scale = 2.5
burst.redSpeed = -1.5
burst.blueSpeed = 1.5
burst.greenSpeed = 1
burst.lifetime = 0.35
let spark = CAEmitterCell()
spark.birthRate = 400
spark.velocity = 125
spark.emissionRange = 2 * CGFloat.pi
spark.yAcceleration = 75
spark.lifetime = 3
spark.contents = UIImage(named: "triangle2")?.cgImage
spark.scaleSpeed = -0.2
spark.greenSpeed = -0.1
spark.redSpeed = 0.4
spark.blueSpeed = -0.1
spark.alphaSpeed = -0.25
spark.spin = 2 * CGFloat.pi
spark.spinRange = 2 * CGFloat.pi
burst.emitterCells = [spark]
cell.emitterCells = [burst]
emitterLayer.emitterCells = [cell]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment