diff --git a/Example/LiquidLoader/ViewController.swift b/Example/LiquidLoader/ViewController.swift index 86ba852..e74854f 100644 --- a/Example/LiquidLoader/ViewController.swift +++ b/Example/LiquidLoader/ViewController.swift @@ -18,21 +18,22 @@ class ViewController: UIViewController { self.view.backgroundColor = UIColor(red: 9 / 255.0, green: 21 / 255.0, blue: 37 / 255.0, alpha: 1.0) let lineColor = UIColor(red: 77 / 255.0, green: 255 / 255.0, blue: 182 / 255.0, alpha: 1.0) + let growColor = UIColor.redColor() let lineFrame = CGRect(x: self.view.frame.width * 0.5 - 100, y: 100, width: 200, height: 100) - let lineLoader = LiquidLoader(frame: lineFrame, effect: .GrowLine(lineColor,7,10.0)) + let lineLoader = LiquidLoader(frame: lineFrame, effect: .GrowLine(lineColor,7,10.0, growColor)) let circleFrame = CGRect(x: self.view.frame.width * 0.5 - 100, y: 200, width: 200, height: 200) let circleColor = UIColor(red: 77 / 255.0, green: 182 / 255.0, blue: 255 / 255.0, alpha: 1.0) - let circleLoader = LiquidLoader(frame: circleFrame, effect: .GrowCircle(circleColor,10,1.0)) + let circleLoader = LiquidLoader(frame: circleFrame, effect: .GrowCircle(circleColor,10,1.0, growColor)) let circleMatColor = UIColor(red: 255 / 255.0, green: 188 / 255.0, blue: 188 / 255.0, alpha: 1.0) let circleMatFrame = CGRect(x: self.view.frame.width * 0.5 - 25, y: 450, width: 50, height: 50) - let circleMat = LiquidLoader(frame: circleMatFrame, effect: .Circle(circleMatColor,8,5.0)) + let circleMat = LiquidLoader(frame: circleMatFrame, effect: .Circle(circleMatColor,8,5.0, growColor)) let lineMatColor = UIColor(red: 255 / 255.0, green: 255 / 255.0, blue: 188 / 255.0, alpha: 1.0) let lineMatFrame = CGRect(x: self.view.frame.width * 0.5 - 25, y: 500, width: 50, height: 50) - let lineMat = LiquidLoader(frame: lineMatFrame, effect: .Line(lineMatColor,4,1.0)) + let lineMat = LiquidLoader(frame: lineMatFrame, effect: .Line(lineMatColor,4,1.0, growColor)) view.addSubview(lineLoader) view.addSubview(circleLoader) diff --git a/Pod/Classes/LiquidCircleEffect.swift b/Pod/Classes/LiquidCircleEffect.swift index 4a1c433..a94e24f 100644 --- a/Pod/Classes/LiquidCircleEffect.swift +++ b/Pod/Classes/LiquidCircleEffect.swift @@ -25,7 +25,8 @@ class LiquidCircleEffect : LiquidLoadEffect { return LiquittableCircle( center: center, radius: self.circleRadius, - color: self.color + color: self.color, + growColor: self.growColor ) } } @@ -55,7 +56,7 @@ class LiquidCircleEffect : LiquidLoadEffect { self.circleScale = 1.10 self.engine = SimpleCircleLiquidEngine(radiusThresh: self.circleRadius * 0.85, angleThresh: 0.5) let moveCircleRadius = circleRadius * moveScale - moveCircle = LiquittableCircle(center: movePosition(0.0), radius: moveCircleRadius, color: self.color) + moveCircle = LiquittableCircle(center: movePosition(0.0), radius: moveCircleRadius, color: self.color, growColor: self.growColor) } override func resize() { diff --git a/Pod/Classes/LiquidLineEffect.swift b/Pod/Classes/LiquidLineEffect.swift index 0bd1ffa..0533cb9 100644 --- a/Pod/Classes/LiquidLineEffect.swift +++ b/Pod/Classes/LiquidLineEffect.swift @@ -18,7 +18,8 @@ class LiquidLineEffect : LiquidLoadEffect { return LiquittableCircle( center: CGPoint(x: self.circleInter + self.circleRadius + CGFloat(i) * (self.circleInter + 2 * self.circleRadius), y: self.loader.frame.height * 0.5), radius: self.circleRadius, - color: self.color + color: self.color, + growColor: self.growColor ) } } @@ -54,7 +55,7 @@ class LiquidLineEffect : LiquidLoadEffect { self.circleInter = (loader.frame.width - 2 * circleRadius * 5) / 6 self.engine = SimpleCircleLiquidEngine(radiusThresh: self.circleRadius, angleThresh: 0.2) let moveCircleRadius = circleRadius * moveScale - self.moveCircle = LiquittableCircle(center: CGPoint(x: 0, y: loader.frame.height * 0.5), radius: moveCircleRadius, color: color) + self.moveCircle = LiquittableCircle(center: CGPoint(x: 0, y: loader.frame.height * 0.5), radius: moveCircleRadius, color: color, growColor: growColor) } override func resize() { diff --git a/Pod/Classes/LiquidLoadEffect.swift b/Pod/Classes/LiquidLoadEffect.swift index b6be0a7..6ea4b5d 100644 --- a/Pod/Classes/LiquidLoadEffect.swift +++ b/Pod/Classes/LiquidLoadEffect.swift @@ -16,6 +16,7 @@ class LiquidLoadEffect : NSObject { var circleScale: CGFloat = 1.17 var moveScale: CGFloat = 0.80 var color = UIColor.whiteColor() + var growColor = UIColor.redColor() var engine: SimpleCircleLiquidEngine? var moveCircle: LiquittableCircle? @@ -41,12 +42,15 @@ class LiquidLoadEffect : NSObject { } } - init(loader: LiquidLoader, color: UIColor, circleCount: Int, duration: CGFloat) { + init(loader: LiquidLoader, color: UIColor, circleCount: Int, duration: CGFloat, growColor: UIColor? = UIColor.redColor()) { self.numberOfCircles = circleCount self.duration = duration self.circleRadius = loader.frame.width * 0.05 self.loader = loader self.color = color + if growColor != nil { + self.growColor = growColor! + } super.init() setup() } @@ -115,7 +119,7 @@ class LiquidLoadEffect : NSObject { func grow(isGrow: Bool) { if isGrow { - shadowCircle = LiquittableCircle(center: self.moveCircle!.center, radius: self.moveCircle!.radius * 1.0, color: self.color) + shadowCircle = LiquittableCircle(center: self.moveCircle!.center, radius: self.moveCircle!.radius * 1.0, color: self.color, growColor: growColor) shadowCircle?.isGrow = isGrow loader?.addSubview(shadowCircle!) } else { diff --git a/Pod/Classes/LiquidLoader.swift b/Pod/Classes/LiquidLoader.swift index cd76dc8..e158f11 100644 --- a/Pod/Classes/LiquidLoader.swift +++ b/Pod/Classes/LiquidLoader.swift @@ -10,23 +10,23 @@ import Foundation import UIKit public enum Effect { - case Line(UIColor,Int,CGFloat) - case Circle(UIColor,Int,CGFloat) - case GrowLine(UIColor,Int,CGFloat) - case GrowCircle(UIColor,Int,CGFloat) + case Line(UIColor, Int, CGFloat, UIColor?) + case Circle(UIColor, Int, CGFloat, UIColor?) + case GrowLine(UIColor, Int, CGFloat, UIColor?) + case GrowCircle(UIColor, Int, CGFloat, UIColor?) func setup(loader: LiquidLoader) -> LiquidLoadEffect { switch self { - case .Line(let color, let count, let duration): - return LiquidLineEffect(loader: loader, color: color, circleCount: count, duration: duration) - case .Circle(let color, let count, let duration): - return LiquidCircleEffect(loader: loader, color: color, circleCount: count, duration: duration) - case .GrowLine(let color, let count, let duration): - let line = LiquidLineEffect(loader: loader, color: color, circleCount: count, duration: duration) + case .Line(let color, let count, let duration, let growColor): + return LiquidLineEffect(loader: loader, color: color, circleCount: count, duration: duration, growColor: growColor) + case .Circle(let color, let count, let duration, let growColor): + return LiquidCircleEffect(loader: loader, color: color, circleCount: count, duration: duration, growColor: growColor) + case .GrowLine(let color, let count, let duration, let growColor): + let line = LiquidLineEffect(loader: loader, color: color, circleCount: count, duration: duration, growColor: growColor) line.isGrow = true return line - case .GrowCircle(let color,let count, let duration): - let circle = LiquidCircleEffect(loader: loader, color: color, circleCount: count, duration: duration) + case .GrowCircle(let color,let count, let duration, let growColor): + let circle = LiquidCircleEffect(loader: loader, color: color, circleCount: count, duration: duration, growColor: growColor) circle.isGrow = true return circle } @@ -45,7 +45,7 @@ public class LiquidLoader : UIView { } public required init?(coder aDecoder: NSCoder) { - self.effect = .Circle(UIColor.whiteColor(), 5, 3.0) + self.effect = .Circle(UIColor.whiteColor(), 5, 3.0, UIColor.redColor()) super.init(coder: aDecoder) self.effectDelegate = self.effect.setup(self) } diff --git a/Pod/Classes/LiquittableCircle.swift b/Pod/Classes/LiquittableCircle.swift index 15f89f0..4d36ecc 100644 --- a/Pod/Classes/LiquittableCircle.swift +++ b/Pod/Classes/LiquittableCircle.swift @@ -23,11 +23,15 @@ class LiquittableCircle : UIView { } } var color: UIColor = UIColor.redColor() + var growColor: UIColor = UIColor.whiteColor() - init(center: CGPoint, radius: CGFloat, color: UIColor) { + init(center: CGPoint, radius: CGFloat, color: UIColor, growColor: UIColor?) { let frame = CGRect(x: center.x - radius, y: center.y - radius, width: 2 * radius, height: 2 * radius) self.radius = radius self.color = color + if growColor != nil { + self.growColor = growColor! + } super.init(frame: frame) setup() } @@ -61,7 +65,7 @@ class LiquittableCircle : UIView { func grow(isGrow: Bool) { if isGrow { - grow(self.color, radius: self.radius, shininess: 1.6) + grow(self.growColor, radius: self.radius, shininess: 1.6) } else { self.layer.shadowRadius = 0 self.layer.shadowOpacity = 0 diff --git a/Pod/Classes/ObjC.swift b/Pod/Classes/ObjC.swift index 7ef794f..3268be5 100644 --- a/Pod/Classes/ObjC.swift +++ b/Pod/Classes/ObjC.swift @@ -18,17 +18,17 @@ import UIKit extension LiquidLoader { - @objc public convenience init(frame: CGRect, effect: ObjCEffect, color: UIColor, numberOfCircle: Int, duration: CGFloat) { + @objc public convenience init(frame: CGRect, effect: ObjCEffect, color: UIColor, numberOfCircle: Int, duration: CGFloat, growColor: UIColor? = UIColor.redColor()) { var s: Effect if effect == .Line { - s = Effect.Line(color, numberOfCircle, duration) + s = Effect.Line(color, numberOfCircle, duration, growColor) } else if effect == .Circle { - s = Effect.Circle(color, numberOfCircle, duration) + s = Effect.Circle(color, numberOfCircle, duration, growColor) } else if effect == .GrowLine { - s = Effect.GrowLine(color, numberOfCircle, duration) + s = Effect.GrowLine(color, numberOfCircle, duration, growColor) } else { //if effect == .GrowCircle { - s = Effect.GrowCircle(color, numberOfCircle, duration) + s = Effect.GrowCircle(color, numberOfCircle, duration, growColor) } self.init(frame: frame, effect: s) diff --git a/Pod/Classes/UIView+Grow.swift b/Pod/Classes/UIView+Grow.swift index 236f4b6..15556a0 100644 --- a/Pod/Classes/UIView+Grow.swift +++ b/Pod/Classes/UIView+Grow.swift @@ -11,7 +11,7 @@ import UIKit extension UIView { func grow(baseColor: UIColor, radius: CGFloat, shininess: CGFloat) { - let growColor = UIColor(red: 0 / 255.0, green: 1, blue: 1, alpha: 1.0) + let growColor = baseColor//UIColor(red: 0 / 255.0, green: 1, blue: 1, alpha: 1.0) growShadow(radius, growColor: growColor, shininess: shininess) let circle = CAShapeLayer() circle.path = UIBezierPath(ovalInRect: CGRect(x: 0, y: 0, width: radius * 2.0, height: radius * 2.0)).CGPath diff --git a/README.md b/README.md index a23a5ad..6bc3a6f 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ LiquidLoader is the spinner loader UI components with liquid animation, inspired ## Usage ```swift -let loader = LiquidLoader(frame: loaderFrame, effect: .GrowCircle(circleColor, 10, 1.0)) //color, number of circles, duration. +let loader = LiquidLoader(frame: loaderFrame, effect: .GrowCircle(circleColor, 10, 1.0, , growColor)) //color, number of circles, duration, growColor. view.addSubview(loader) ```