Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 8 additions & 14 deletions RangeSlider/RangeSlider.swift
Original file line number Diff line number Diff line change
Expand Up @@ -76,37 +76,25 @@ class RangeSliderThumbLayer: CALayer {
@IBDesignable
class RangeSlider: UIControl {
@IBInspectable var minimumValue: Double = 0.0 {
willSet(newValue) {
assert(newValue < maximumValue, "RangeSlider: minimumValue should be lower than maximumValue")
}
didSet {
updateLayerFrames()
}
}

@IBInspectable var maximumValue: Double = 1.0 {
willSet(newValue) {
assert(newValue > minimumValue, "RangeSlider: maximumValue should be greater than minimumValue")
}
didSet {
updateLayerFrames()
}
}

@IBInspectable var lowerValue: Double = 0.2 {
didSet {
if lowerValue < minimumValue {
lowerValue = minimumValue
}
updateLayerFrames()
}
}

@IBInspectable var upperValue: Double = 0.8 {
didSet {
if upperValue > maximumValue {
upperValue = maximumValue
}
updateLayerFrames()
}
}
Expand Down Expand Up @@ -253,9 +241,15 @@ class RangeSlider: UIControl {

// Update the values
if lowerThumbLayer.highlighted {
lowerValue = boundValue(lowerValue + deltaValue, toLowerValue: minimumValue, upperValue: upperValue - gapBetweenThumbs)
// Find out if the slider is using a normal or an inverted scale, and set the bounds appropriatley
let lowerBound = minimumValue < maximumValue ? minimumValue : upperValue - gapBetweenThumbs
let upperBound = minimumValue < maximumValue ? upperValue - gapBetweenThumbs : minimumValue
lowerValue = boundValue(lowerValue + deltaValue, toLowerValue: lowerBound, upperValue: upperBound)
} else if upperThumbLayer.highlighted {
upperValue = boundValue(upperValue + deltaValue, toLowerValue: lowerValue + gapBetweenThumbs, upperValue: maximumValue)
// Find out if the slider is using a normal or an inverted scale, and set the bounds appropriatley
let lowerBound = minimumValue < maximumValue ? lowerValue + gapBetweenThumbs : maximumValue
let upperBound = minimumValue < maximumValue ? maximumValue : lowerValue + gapBetweenThumbs
upperValue = boundValue(upperValue + deltaValue, toLowerValue: lowerBound, upperValue: upperBound)
}

sendActionsForControlEvents(.ValueChanged)
Expand Down
8 changes: 7 additions & 1 deletion RangeSlider/ViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,16 @@ class ViewController: UIViewController {
rangeSlider2.trackHighlightTintColor = UIColor.redColor()
rangeSlider2.curvaceousness = 0.0

// Make rangeSlider 2 use an inverted scale (100->0)
rangeSlider2.minimumValue = 100
rangeSlider2.maximumValue = 0
rangeSlider2.lowerValue = 100

view.addSubview(rangeSlider1)
view.addSubview(rangeSlider2)

rangeSlider1.addTarget(self, action: "rangeSliderValueChanged:", forControlEvents: .ValueChanged)
rangeSlider1.addTarget(self, action: #selector(rangeSliderValueChanged), forControlEvents: .ValueChanged)
rangeSlider2.addTarget(self, action: #selector(rangeSliderValueChanged), forControlEvents: .ValueChanged)
}

override func viewDidLayoutSubviews() {
Expand Down