@@ -11,7 +11,7 @@ import UIKit
11@IBDesignable public class GMStepper: UIControl {
11@IBDesignable public class GMStepper: UIControl {
13 /// Current value of the stepper. Defaults to 0.
13 /// Current value of the stepper. Defaults to 0.
14− @objc @IBInspectable public var value: Double = 0 {
14+ @IBInspectable public var value: Double = 0 {
16 value = min(maximumValue, max(minimumValue, value))
16 value = min(maximumValue, max(minimumValue, value))
@@ -37,44 +37,44 @@ import UIKit
39 /// Minimum value. Must be less than maximumValue. Defaults to 0.
39 /// Minimum value. Must be less than maximumValue. Defaults to 0.
40− @objc @IBInspectable public var minimumValue: Double = 0 {
40+ @IBInspectable public var minimumValue: Double = 0 {
42 value = min(maximumValue, max(minimumValue, value))
42 value = min(maximumValue, max(minimumValue, value))
46 /// Maximum value. Must be more than minimumValue. Defaults to 100.
46 /// Maximum value. Must be more than minimumValue. Defaults to 100.
47− @objc @IBInspectable public var maximumValue: Double = 100 {
47+ @IBInspectable public var maximumValue: Double = 100 {
49 value = min(maximumValue, max(minimumValue, value))
49 value = min(maximumValue, max(minimumValue, value))
53 /// Step/Increment value as in UIStepper. Defaults to 1.
53 /// Step/Increment value as in UIStepper. Defaults to 1.
54− @objc @IBInspectable public var stepValue: Double = 1
54+ @IBInspectable public var stepValue: Double = 1
56 /// The same as UIStepper's autorepeat. If true, holding on the buttons or keeping the pan gesture alters the value repeatedly. Defaults to true.
56 /// The same as UIStepper's autorepeat. If true, holding on the buttons or keeping the pan gesture alters the value repeatedly. Defaults to true.
57− @objc @IBInspectable public var autorepeat: Bool = true
57+ @IBInspectable public var autorepeat: Bool = true
59 /// If the value is integer, it is shown without floating point.
59 /// If the value is integer, it is shown without floating point.
60− @objc @IBInspectable public var showIntegerIfDoubleIsInteger: Bool = true
60+ @IBInspectable public var showIntegerIfDoubleIsInteger: Bool = true
62 /// Text on the left button. Be sure that it fits in the button. Defaults to "−".
62 /// Text on the left button. Be sure that it fits in the button. Defaults to "−".
63− @objc @IBInspectable public var leftButtonText: String = "−" {
63+ @IBInspectable public var leftButtonText: String = "−" {
65 leftButton.setTitle(leftButtonText, for: .normal)
65 leftButton.setTitle(leftButtonText, for: .normal)
69 /// Text on the right button. Be sure that it fits in the button. Defaults to "+".
69 /// Text on the right button. Be sure that it fits in the button. Defaults to "+".
70− @objc @IBInspectable public var rightButtonText: String = "+" {
70+ @IBInspectable public var rightButtonText: String = "+" {
72 rightButton.setTitle(rightButtonText, for: .normal)
72 rightButton.setTitle(rightButtonText, for: .normal)
76 /// Text color of the buttons. Defaults to white.
76 /// Text color of the buttons. Defaults to white.
77− @objc @IBInspectable public var buttonsTextColor: UIColor = UIColor.white {
77+ @IBInspectable public var buttonsTextColor: UIColor = UIColor.white {
79 for button in [leftButton, rightButton] {
79 for button in [leftButton, rightButton] {
80 button.setTitleColor(buttonsTextColor, for: .normal)
80 button.setTitleColor(buttonsTextColor, for: .normal)
@@ -83,7 +83,7 @@ import UIKit
85 /// Background color of the buttons. Defaults to dark blue.
85 /// Background color of the buttons. Defaults to dark blue.
86− @objc @IBInspectable public var buttonsBackgroundColor: UIColor = UIColor(red:0.21, green:0.5, blue:0.74, alpha:1) {
86+ @IBInspectable public var buttonsBackgroundColor: UIColor = UIColor(red:0.21, green:0.5, blue:0.74, alpha:1) {
88 for button in [leftButton, rightButton] {
88 for button in [leftButton, rightButton] {
89 button.backgroundColor = buttonsBackgroundColor
89 button.backgroundColor = buttonsBackgroundColor
@@ -93,7 +93,7 @@ import UIKit
95 /// Font of the buttons. Defaults to AvenirNext-Bold, 20.0 points in size.
95 /// Font of the buttons. Defaults to AvenirNext-Bold, 20.0 points in size.
96− @objc public var buttonsFont = UIFont(name: "AvenirNext-Bold", size: 20.0)! {
96+ public var buttonsFont = UIFont(name: "AvenirNext-Bold", size: 20.0)! {
98 for button in [leftButton, rightButton] {
98 for button in [leftButton, rightButton] {
99 button.titleLabel?.font = buttonsFont
99 button.titleLabel?.font = buttonsFont
@@ -102,35 +102,28 @@ import UIKit
104 /// Text color of the middle label. Defaults to white.
104 /// Text color of the middle label. Defaults to white.
105− @objc @IBInspectable public var labelTextColor: UIColor = UIColor.white {
105+ @IBInspectable public var labelTextColor: UIColor = UIColor.white {
107 label.textColor = labelTextColor
107 label.textColor = labelTextColor
111 /// Text color of the middle label. Defaults to lighter blue.
111 /// Text color of the middle label. Defaults to lighter blue.
112− @objc @IBInspectable public var labelBackgroundColor: UIColor = UIColor(red:0.26, green:0.6, blue:0.87, alpha:1) {
112+ @IBInspectable public var labelBackgroundColor: UIColor = UIColor(red:0.26, green:0.6, blue:0.87, alpha:1) {
114 label.backgroundColor = labelBackgroundColor
114 label.backgroundColor = labelBackgroundColor
118 /// Font of the middle label. Defaults to AvenirNext-Bold, 25.0 points in size.
118 /// Font of the middle label. Defaults to AvenirNext-Bold, 25.0 points in size.
119− @objc public var labelFont = UIFont(name: "AvenirNext-Bold", size: 25.0)! {
119+ public var labelFont = UIFont(name: "AvenirNext-Bold", size: 25.0)! {
121 label.font = labelFont
121 label.font = labelFont
124− /// Corner radius of the middle label. Defaults to 0.
125− @objc @IBInspectable public var labelCornerRadius: CGFloat = 0 {
127− label.layer.cornerRadius = labelCornerRadius
132 /// Corner radius of the stepper's layer. Defaults to 4.0.
125 /// Corner radius of the stepper's layer. Defaults to 4.0.
133− @objc @IBInspectable public var cornerRadius: CGFloat = 4.0 {
126+ @IBInspectable public var cornerRadius: CGFloat = 4.0 {
135 layer.cornerRadius = cornerRadius
128 layer.cornerRadius = cornerRadius
136 clipsToBounds = true
129 clipsToBounds = true
@@ -138,7 +131,7 @@ import UIKit
140 /// Border width of the stepper and middle label's layer. Defaults to 0.0.
133 /// Border width of the stepper and middle label's layer. Defaults to 0.0.
141− @objc @IBInspectable public var borderWidth: CGFloat = 0.0 {
134+ @IBInspectable public var borderWidth: CGFloat = 0.0 {
143 layer.borderWidth = borderWidth
136 layer.borderWidth = borderWidth
144 label.layer.borderWidth = borderWidth
137 label.layer.borderWidth = borderWidth
@@ -146,7 +139,7 @@ import UIKit
148 /// Color of the border of the stepper and middle label's layer. Defaults to clear color.
141 /// Color of the border of the stepper and middle label's layer. Defaults to clear color.
149− @objc @IBInspectable public var borderColor: UIColor = UIColor.clear {
142+ @IBInspectable public var borderColor: UIColor = UIColor.clear {
151 layer.borderColor = borderColor.cgColor
144 layer.borderColor = borderColor.cgColor
152 label.layer.borderColor = borderColor.cgColor
145 label.layer.borderColor = borderColor.cgColor
@@ -154,7 +147,7 @@ import UIKit
156 /// Percentage of the middle label's width. Must be between 0 and 1. Defaults to 0.5. Be sure that it is wide enough to show the value.
149 /// Percentage of the middle label's width. Must be between 0 and 1. Defaults to 0.5. Be sure that it is wide enough to show the value.
157− @objc @IBInspectable public var labelWidthWeight: CGFloat = 0.5 {
150+ @IBInspectable public var labelWidthWeight: CGFloat = 0.5 {
159 labelWidthWeight = min(1, max(0, labelWidthWeight))
152 labelWidthWeight = min(1, max(0, labelWidthWeight))
160 setNeedsLayout()
153 setNeedsLayout()
@@ -162,7 +155,7 @@ import UIKit
164 /// Color of the flashing animation on the buttons in case the value hit the limit.
157 /// Color of the flashing animation on the buttons in case the value hit the limit.
165− @objc @IBInspectable public var limitHitAnimationColor: UIColor = UIColor(red:0.26, green:0.6, blue:0.87, alpha:1)
158+ @IBInspectable public var limitHitAnimationColor: UIColor = UIColor(red:0.26, green:0.6, blue:0.87, alpha:1)
168 Width of the sliding animation. When buttons clicked, the middle label does a slide animation towards to the clicked button. Defaults to 5.
161 Width of the sliding animation. When buttons clicked, the middle label does a slide animation towards to the clicked button. Defaults to 5.
@@ -212,8 +205,6 @@ import UIKit
212 label.textColor = self.labelTextColor
205 label.textColor = self.labelTextColor
213 label.backgroundColor = self.labelBackgroundColor
206 label.backgroundColor = self.labelBackgroundColor
214 label.font = self.labelFont
207 label.font = self.labelFont
215− label.layer.cornerRadius = self.labelCornerRadius
216− label.layer.masksToBounds = true
217 label.isUserInteractionEnabled = true
208 label.isUserInteractionEnabled = true
218 let panRecognizer = UIPanGestureRecognizer(target: self, action: #selector(GMStepper.handlePan))
209 let panRecognizer = UIPanGestureRecognizer(target: self, action: #selector(GMStepper.handlePan))
219 panRecognizer.maximumNumberOfTouches = 1
210 panRecognizer.maximumNumberOfTouches = 1
@@ -245,7 +236,7 @@ import UIKit
248− @objc public var items : [String] = [] {
239+ public var items : [String] = [] {
250 let isInteger = floor(value) == value
241 let isInteger = floor(value) == value
@@ -291,12 +282,12 @@ import UIKit
294− @objc required public init?(coder aDecoder: NSCoder) {
285+ required public init?(coder aDecoder: NSCoder) {
295 super.init(coder: aDecoder)
286 super.init(coder: aDecoder)
299− @objc public override init(frame: CGRect) {
290+ public override init(frame: CGRect) {
300 super.init(frame: frame)
291 super.init(frame: frame)
@@ -356,7 +347,7 @@ import UIKit
357// MARK: Pan Gesture
348// MARK: Pan Gesture
358extension GMStepper {
349extension GMStepper {
359− @objc func handlePan(gesture: UIPanGestureRecognizer) {
350+ func handlePan(gesture: UIPanGestureRecognizer) {
360 switch gesture.state {
351 switch gesture.state {
361 case .began:
352 case .began:
362 leftButton.isEnabled = false
353 leftButton.isEnabled = false
@@ -406,7 +397,7 @@ extension GMStepper {
409− @objc func reset() {
400+ func reset() {
410 panState = .Stable
401 panState = .Stable
411 stepperState = .Stable
402 stepperState = .Stable
412 resetTimer()
403 resetTimer()
@@ -425,7 +416,7 @@ extension GMStepper {
426// MARK: Button Events
417// MARK: Button Events
427extension GMStepper {
418extension GMStepper {
428− @objc func leftButtonTouchDown(button: UIButton) {
419+ func leftButtonTouchDown(button: UIButton) {
429 rightButton.isEnabled = false
420 rightButton.isEnabled = false
430 label.isUserInteractionEnabled = false
421 label.isUserInteractionEnabled = false
431 resetTimer()
422 resetTimer()
@@ -439,7 +430,7 @@ extension GMStepper {
442− @objc func rightButtonTouchDown(button: UIButton) {
433+ func rightButtonTouchDown(button: UIButton) {
443 leftButton.isEnabled = false
434 leftButton.isEnabled = false
444 label.isUserInteractionEnabled = false
435 label.isUserInteractionEnabled = false
445 resetTimer()
436 resetTimer()
@@ -452,7 +443,7 @@ extension GMStepper {
455− @objc func buttonTouchUp(button: UIButton) {
446+ func buttonTouchUp(button: UIButton) {
@@ -497,7 +488,7 @@ extension GMStepper {
498// MARK: Timer
489// MARK: Timer
499extension GMStepper {
490extension GMStepper {
500− @objc func handleTimerFire(timer: Timer) {
491+ func handleTimerFire(timer: Timer) {
501 timerFireCount += 1
492 timerFireCount += 1
503 if timerFireCount % timerFireCountModulo == 0 {
494 if timerFireCount % timerFireCountModulo == 0 {