on master help sign in
Add value:Double, stepperValue and showIntegerIfDoubleIsInteger
commit1e5a91f90cb780f2c65ad32df38c512e87a9285c authorGunay Mert Karadogan <mertkaradogan@gmail.com> dateSat 11 Jul 2015, 14:20 (11 years ago) parent9619704
2 files changed+36−17
GMStepper/GMStepper.swift+24−8 GMStepperExample/GMStepperExample/Base.lproj/Main.storyboard+12−9
GMStepper/GMStepper.swift+24−8
@@ -11,10 +11,17 @@ import UIKit
1111@IBDesignable public class GMStepper: UIControl {
1212
1313 /// Current value of the stepper. Defaults to 0.
14− @IBInspectable public var value = 0 {
14+ @IBInspectable public var value: Double = 0 {
1515 didSet {
1616 value = min(maximumValue, max(minimumValue, value))
17− label.text = String(value)
17+
18+ let isInteger = floor(value) == value
19+
20+ if showIntegerIfDoubleIsInteger && isInteger {
21+ label.text = String(stringInterpolationSegment: Int(value))
22+ } else {
23+ label.text = String(stringInterpolationSegment: value)
24+ }
1825
1926 if oldValue != value {
2027 sendActionsForControlEvents(.ValueChanged)
@@ -23,22 +30,27 @@ import UIKit
2330 }
2431
2532 /// Minimum value. Must be less than maximumValue. Defaults to 0.
26− @IBInspectable public var minimumValue: Int = 0 {
33+ @IBInspectable public var minimumValue: Double = 0 {
2734 didSet {
2835 value = min(maximumValue, max(minimumValue, value))
2936 }
3037 }
3138
32− /// Maximum value. Must be more than minimumValue. Defaults to 10.
33− @IBInspectable public var maximumValue: Int = 10 {
39+ /// Maximum value. Must be more than minimumValue. Defaults to 100.
40+ @IBInspectable public var maximumValue: Double = 100 {
3441 didSet {
3542 value = min(maximumValue, max(minimumValue, value))
3643 }
3744 }
3845
46+ /// Step/Increment value as in UIStepper. Defaults to 1.
47+ @IBInspectable public var stepValue: Double = 1
48+
3949 /// The same as UIStepper's autorepeat. If true, holding on the buttons or keeping the pan gesture alters the value repeatedly. Defaults to true.
4050 @IBInspectable public var autorepeat: Bool = true
4151
52+ @IBInspectable public var showIntegerIfDoubleIsInteger: Bool = true
53+
4254 /// Text on the left button. Be sure that it fits in the button. Defaults to "-".
4355 @IBInspectable public var leftButtonText: String = "-" {
4456 didSet {
@@ -159,7 +171,11 @@ import UIKit
159171 lazy var label: UILabel = {
160172 let label = UILabel()
161173 label.textAlignment = .Center
162− label.text = String(self.value)
174+ if self.showIntegerIfDoubleIsInteger && floor(self.value) == self.value {
175+ label.text = String(stringInterpolationSegment: Int(self.value))
176+ } else {
177+ label.text = String(stringInterpolationSegment: self.value)
178+ }
163179 label.textColor = self.labelTextColor
164180 label.backgroundColor = self.labelBackgroundColor
165181 label.font = self.labelFont
@@ -264,9 +280,9 @@ import UIKit
264280
265281 func updateValue() {
266282 if stepperState == .ShouldIncrease {
267− value += 1
283+ value += stepValue
268284 } else if stepperState == .ShouldDecrease {
269− value -= 1
285+ value -= stepValue
270286 }
271287 }
272288}
GMStepperExample/GMStepperExample/Base.lproj/Main.storyboard+12−9
@@ -25,11 +25,17 @@
2525 </constraints>
2626 <userDefinedRuntimeAttributes>
2727 <userDefinedRuntimeAttribute type="number" keyPath="minimumValue">
28− <integer key="value" value="0"/>
28+ <real key="value" value="2"/>
2929 </userDefinedRuntimeAttribute>
3030 <userDefinedRuntimeAttribute type="number" keyPath="maximumValue">
3131 <integer key="value" value="100"/>
3232 </userDefinedRuntimeAttribute>
33+ <userDefinedRuntimeAttribute type="number" keyPath="stepValue">
34+ <real key="value" value="0.5"/>
35+ </userDefinedRuntimeAttribute>
36+ <userDefinedRuntimeAttribute type="number" keyPath="value">
37+ <real key="value" value="2.1000000000000001"/>
38+ </userDefinedRuntimeAttribute>
3339 </userDefinedRuntimeAttributes>
3440 </view>
3541 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="if7-U5-bAM" customClass="GMStepper" customModule="GMStepperExample" customModuleProvider="target">
@@ -41,10 +47,10 @@
4147 </constraints>
4248 <userDefinedRuntimeAttributes>
4349 <userDefinedRuntimeAttribute type="number" keyPath="minimumValue">
44− <integer key="value" value="0"/>
50+ <real key="value" value="0.40000000000000002"/>
4551 </userDefinedRuntimeAttribute>
4652 <userDefinedRuntimeAttribute type="number" keyPath="maximumValue">
47− <integer key="value" value="100"/>
53+ <real key="value" value="100"/>
4854 </userDefinedRuntimeAttribute>
4955 <userDefinedRuntimeAttribute type="color" keyPath="buttonsBackgroundColor">
5056 <color key="value" red="1" green="0.3591497541" blue="0.36842127060000002" alpha="1" colorSpace="calibratedRGB"/>
@@ -61,6 +67,9 @@
6167 <userDefinedRuntimeAttribute type="color" keyPath="limitHitAnimationColor">
6268 <color key="value" red="0.90823972230000005" green="0.92638683320000004" blue="0.93171715740000005" alpha="1" colorSpace="calibratedRGB"/>
6369 </userDefinedRuntimeAttribute>
70+ <userDefinedRuntimeAttribute type="number" keyPath="stepValue">
71+ <real key="value" value="0.40000000000000002"/>
72+ </userDefinedRuntimeAttribute>
6473 </userDefinedRuntimeAttributes>
6574 </view>
6675 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="R9n-I0-fq7" customClass="GMStepper" customModule="GMStepperExample" customModuleProvider="target">
@@ -83,12 +92,6 @@
8392 <userDefinedRuntimeAttribute type="color" keyPath="buttonsTextColor">
8493 <color key="value" white="1" alpha="1" colorSpace="calibratedWhite"/>
8594 </userDefinedRuntimeAttribute>
86− <userDefinedRuntimeAttribute type="number" keyPath="minimumValue">
87− <integer key="value" value="0"/>
88− </userDefinedRuntimeAttribute>
89− <userDefinedRuntimeAttribute type="number" keyPath="maximumValue">
90− <integer key="value" value="100"/>
91− </userDefinedRuntimeAttribute>
9295 <userDefinedRuntimeAttribute type="color" keyPath="limitHitAnimationColor">
9396 <color key="value" red="0.6588235294" green="0.85882352939999995" blue="0.6588235294" alpha="1" colorSpace="calibratedRGB"/>
9497 </userDefinedRuntimeAttribute>