RxSplitSlider
SplitSlider 的响应式扩展。
可自定义的中间部分双向滑动条。左右两部分相互独立,每部分可以有不同的最小值、最大值、步长、颜色等。
使用方法
简单地将自定义视图添加到 Storyboard 中或通过编程方式创建。同样也不忘记导入 SplitSlider
。
let slider = SplitSlider()
通用的滑动条属性(影响两部分)
// Minimal slider value.
slider.min = 0
// Maximal slider value.
slider.max = 100
// Step value of the slider.
slider.step = 5
// Font of the value labels.
slider.labelFont = UIFont.systemFont(ofSize: 10)
// Font color of the value labels.
slider.labelTextColor = UIColor.black
// Size of the slider's thumb.
slider.thumbSize = 20
// Color of the thumb.
slider.thumbColor = UIColor.darkGray
// Track height.
slider.trackHeight = 0
// Track color.
slider.trackColor = = UIColor.lightGray
// Color of selected part of the track.
slider.trackHighlightColor = UIColor.gray
// Determines if thumb should be snapped to the closest step after the move.
slider.snapToStep = true
上述所有属性都会影响滑块的两侧,但可以通过 slider.left
或 slider.right
部分来单独设置。
观察变化
// Slider portion selected - called when user selects (holds) portion of the slider. Return `nil` when no portion is being selected.
splitSlider
.rx
.portionSelected
.asDriver(onErrorJustReturn: nil)
.drive(onNext: { portion in
let portionString = portion == self.splitSlider.left ? "left" : "right"
NSLog("Selected part: \(portion == nil ? "none" : portionString)")
}).disposed(by: disposeBag)
// Slider value changed for portion of slider.
splitSlider
.rx
.portionValueChanged
.asDriver(onErrorJustReturn: (0, SplitSliderPortion()))
.drive(onNext: { [unowned self] (value, portion) in
let portionString = portion == self.splitSlider.left ? "left" : "right"
NSLog("Current value: \(value) (portion: \(portionString))")
}).disposed(by: disposeBag)
示例
要运行示例项目,请运行 pod try
。
需求
iOS 8及以上。
安装
RxSplitSlider 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中
pod "RxSplitSlider"
作者
Tomas Friml,[email protected]
许可协议
RxSplitSlider 在 MIT 许可下提供。更多信息请参阅 LICENSE 文件。