Skip to content

Instantly share code, notes, and snippets.

@victorchee
Created December 29, 2018 06:11

Revisions

  1. victorchee created this gist Dec 29, 2018.
    53 changes: 53 additions & 0 deletions Fireworks.swift
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,53 @@
    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]