diff --git a/Pod/Classes/SAConfettiView.swift b/Pod/Classes/SAConfettiView.swift index 12c15ab..24def2a 100644 --- a/Pod/Classes/SAConfettiView.swift +++ b/Pod/Classes/SAConfettiView.swift @@ -6,102 +6,103 @@ // // +import Foundation import UIKit import QuartzCore public class SAConfettiView: UIView { - + public enum ConfettiType { case Confetti - case Triangle case Star case Diamond + case Triangle case Image(UIImage) } - + var emitter: CAEmitterLayer! public var colors: [UIColor]! public var intensity: Float! public var type: ConfettiType! private var active :Bool! - + required public init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) setup() } - + public override init(frame: CGRect) { super.init(frame: frame) setup() } - + func setup() { colors = [UIColor(red:0.95, green:0.40, blue:0.27, alpha:1.0), - UIColor(red:1.00, green:0.78, blue:0.36, alpha:1.0), - UIColor(red:0.48, green:0.78, blue:0.64, alpha:1.0), - UIColor(red:0.30, green:0.76, blue:0.85, alpha:1.0), - UIColor(red:0.58, green:0.39, blue:0.55, alpha:1.0)] + UIColor(red:1.00, green:0.78, blue:0.36, alpha:1.0), + UIColor(red:0.48, green:0.78, blue:0.64, alpha:1.0), + UIColor(red:0.30, green:0.76, blue:0.85, alpha:1.0), + UIColor(red:0.58, green:0.39, blue:0.55, alpha:1.0)] intensity = 0.5 type = .Confetti active = false } - + public func startConfetti() { emitter = CAEmitterLayer() - + emitter.emitterPosition = CGPoint(x: frame.size.width / 2.0, y: 0) emitter.emitterShape = kCAEmitterLayerLine emitter.emitterSize = CGSize(width: frame.size.width, height: 1) - + var cells = [CAEmitterCell]() for color in colors { - cells.append(confettiWithColor(color)) + cells.append(confettiWithColor(color: color)) } - + emitter.emitterCells = cells layer.addSublayer(emitter) active = true } - + public func stopConfetti() { emitter?.birthRate = 0 active = false } - + func imageForType(type: ConfettiType) -> UIImage? { - + var fileName: String! - + switch type { case .Confetti: fileName = "confetti" - case .Triangle: - fileName = "triangle" case .Star: fileName = "star" case .Diamond: fileName = "diamond" + case .Triangle: + fileName = "triangle" case let .Image(customImage): return customImage } - - let path = NSBundle(forClass: SAConfettiView.self).pathForResource("SAConfettiView", ofType: "bundle") - let bundle = NSBundle(path: path!) - let imagePath = bundle?.pathForResource(fileName, ofType: "png") + + let path = Bundle(for: SAConfettiView.self).path(forResource: "SAConfettiView", ofType: "bundle") + let bundle = Bundle(path: path!) + let imagePath = bundle?.path(forResource: fileName, ofType: "png") let url = NSURL(fileURLWithPath: imagePath!) - let data = NSData(contentsOfURL: url) + let data = NSData(contentsOf: url as URL) if let data = data { - return UIImage(data: data)! + return UIImage(data: data as Data)! } return nil } - + func confettiWithColor(color: UIColor) -> CAEmitterCell { let confetti = CAEmitterCell() confetti.birthRate = 6.0 * intensity confetti.lifetime = 14.0 * intensity confetti.lifetimeRange = 0 - confetti.color = color.CGColor + confetti.color = color.cgColor confetti.velocity = CGFloat(350.0 * intensity) confetti.velocityRange = CGFloat(80.0 * intensity) confetti.emissionLongitude = CGFloat(M_PI) @@ -110,11 +111,11 @@ public class SAConfettiView: UIView { confetti.spinRange = CGFloat(4.0 * intensity) confetti.scaleRange = CGFloat(intensity) confetti.scaleSpeed = CGFloat(-0.1 * intensity) - confetti.contents = imageForType(type)!.CGImage + confetti.contents = imageForType(type: type)!.cgImage return confetti } - + public func isActive() -> Bool { - return self.active + return self.active } }