Skip to content

Commit c15e1a1

Browse files
Merge pull request #42 from SimformSolutionsPvtLtd/feature/Configuration_Support
Added Configuration Support
2 parents 0869698 + 766989a commit c15e1a1

1 file changed

Lines changed: 26 additions & 14 deletions

File tree

SSSpinnerButton/SpinnerButton/SSSpinnerButton.swift

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ open class SSSpinnerButton: UIButton {
2323
internal var storedDisableTitle: String?
2424
internal var storedHighlitedTitle: String?
2525

26-
internal var rippleEffectAnimationDuration = 0.0
27-
internal var initialOpacity = 0.0
28-
internal var rippleEffectColor = UIColor.white
29-
internal var rippleEffectPercent = CGFloat(0.0)
30-
internal var initalRippleEffectPercent: CGFloat = CGFloat(0.0)
26+
public var rippleEffectAnimationDuration = 0.0
27+
public var initialOpacity = 0.0
28+
public var rippleEffectColor = UIColor.white
29+
public var rippleEffectPercent = CGFloat(0.0)
30+
public var initalRippleEffectPercent: CGFloat = CGFloat(0.0)
3131

3232
internal var storedAttributedNormalTitle: NSAttributedString?
3333
internal var storedAttributedSelectedTitle: NSAttributedString?
@@ -43,11 +43,12 @@ open class SSSpinnerButton: UIButton {
4343
internal var storedDisabledImage: UIImage?
4444
internal var storedHighlightedImage: UIImage?
4545
internal var storedBackgroundColor: UIColor?
46+
4647
fileprivate var animationDuration: CFTimeInterval = 0.1
4748

4849
fileprivate var isAnimating: Bool = false
4950

50-
fileprivate var spinnerType: SpinnerType = .ballClipRotate
51+
fileprivate var spinnerType: SpinnerType = Config.spinnerType
5152

5253
fileprivate var storedWidth: CGFloat?
5354
fileprivate var storedHeight: CGFloat?
@@ -58,21 +59,22 @@ open class SSSpinnerButton: UIButton {
5859
layer.cornerRadius = newValue
5960
}
6061
}
61-
6262
@IBInspectable var setRippleEffect: Bool = false {
6363
didSet {
6464
if setRippleEffect {
65-
self.setRippleEffect(rippleEffectAnimationDuration: 0.3, initialOpacity: 0.5, rippleEffectColor: .white, rippleEffectPercent: 0.45, initalRippleEffectPercent: 0.3)
65+
self.setRippleEffect(rippleEffectAnimationDuration: 0.3, initialOpacity: 0.5, rippleEffectColor: rippleEffectColor, rippleEffectPercent: 0.45, initalRippleEffectPercent: 0.3)
6666
}
6767
}
6868
}
6969

7070
/// Sets the spinner color
71-
public var spinnerColor: UIColor = UIColor.gray
71+
public var spinnerColor: UIColor = Config.spinnerColor
7272

73-
var spinnerSize: UInt?
73+
var spinnerSize: UInt? = Config.spinnerSize
7474
/// Sets the button title for its normal state
7575

76+
77+
7678
public var normalTitle: String? {
7779
get {
7880
return self.title(for: .normal)
@@ -271,8 +273,8 @@ public extension SSSpinnerButton {
271273
/// - spinnerType: spinner Type ( ballClipRotate(default), ballSpinFade, lineSpinFade, circleStrokeSpin, ballRotateChase)
272274
/// - spinnercolor: color of spinner (default = gray)
273275
/// - complete: complation block (call after animation start)
274-
func startAnimate(spinnerType: SpinnerType = .ballClipRotate, spinnercolor: UIColor = .gray, complete: (() -> Void)?) {
275-
self.startAnimate(spinnerType: spinnerType, spinnercolor: spinnercolor, spinnerSize: nil, complete: complete)
276+
func startAnimate(spinnerType: SpinnerType = Config.spinnerType, spinnercolor: UIColor = Config.spinnerColor, complete: (() -> Void)?) {
277+
self.startAnimate(spinnerType: spinnerType , spinnercolor: spinnercolor, spinnerSize: nil, complete: complete)
276278
}
277279

278280
/// Start Animation
@@ -282,7 +284,7 @@ public extension SSSpinnerButton {
282284
/// - spinnercolor: color of spinner (default = gray)
283285
/// - spinnerSize: size of spinner layer
284286
/// - complete: complation block (call after animation start)
285-
func startAnimate(spinnerType: SpinnerType = .ballClipRotate, spinnercolor: UIColor = .gray, spinnerSize: UInt?, complete: (() -> Void)?) {
287+
func startAnimate(spinnerType: SpinnerType = Config.spinnerType, spinnercolor: UIColor = Config.spinnerColor, spinnerSize: UInt? = nil, complete: (() -> Void)?) {
286288
if self.cornrRadius == 0 {
287289
self.cornrRadius = self.layer.cornerRadius
288290
}
@@ -291,7 +293,7 @@ public extension SSSpinnerButton {
291293
isAnimating = true
292294
self.spinnerColor = spinnercolor
293295
self.spinnerType = spinnerType
294-
self.spinnerSize = spinnerSize
296+
self.spinnerSize = spinnerSize ?? Config.spinnerSize
295297

296298
self.layer.cornerRadius = self.frame.height / 2
297299
if layer.sublayers != nil {
@@ -537,3 +539,13 @@ private extension SSSpinnerButton {
537539
}
538540

539541
}
542+
543+
544+
extension SSSpinnerButton {
545+
546+
public struct Config {
547+
public static var spinnerType: SpinnerType = .ballClipRotate
548+
public static var spinnerColor: UIColor = .gray
549+
public static var spinnerSize: UInt? = nil
550+
}
551+
}

0 commit comments

Comments
 (0)