RangeSeekSlider
概述
RangeSeekSlider
提供一个可定制的范围滑块,类似于 UISlider
。此库基于 TomThorpe/TTRangeSlider (Objective-C) 并使用 Swift 制作。
演示
您可以在 Appetize.io 上尝试
或者
构建 Xcode 项目。
- 打开 RangeSeekSlider.xcodeproj。
- 将方案更改为
RangeSeekSliderDemo
- 运行
使用方法
将 RangeSeekSlider 添加,就像添加任何其他 UIControl
一样。以下两种方法之一:
- 在 Storyboard/xib 中添加一个视图,并将其
Class
和Module
更改为RangeSeekSlider
。您可以在属性检查器中设置所有属性并实时预览。
或者
- 使用
RangeSeekSlider()
在代码中创建RangeSeekSlider
,然后将其作为子视图添加到代码中,并设置相关的自动布局属性或框架。
默认滑动条的范围为 0.0 -> 100.0,最小预选值为 10.0,最大预选值为 90.0。
用户选择的价值通过 selectedMinValue
和 selectedMaxValue
属性公开。您还可以使用这些属性按程序更改选择值(如果您希望的话)。
使用以下属性进行控制的其它自定义操作
tintColor
tintColor属性(您也可以在Interface Builder中进行设置)用于设置控件的整体颜色,包括线条颜色、两个手柄和标签的颜色。
随时改变tintColor
是安全的,如果控件当前可见,颜色变化将以动画形式过渡到新颜色。
minValue
在选择范围内的最小可能值
maxValue
在选择范围内的最大可能值
selectedMinValue
预先选择的最低值(注意:这应该小于selectedMaxValue)
selectedMaxValue
预先选择的最高值(注意:这应该大于selectedMinValue)
minLabelFont
最小值文本标签的字体。如果没有设置,默认为系统字体大小12.0
。
maxLabelFont
最大值文本标签的字体。如果未设置,则默认为系统字体大小 12.0
。
numberFormatter
滑块上的每个手柄上方都显示当前选定的值标签。如果您更改数字格式,请更新 NumberFormatter
的每个属性。默认情况下,这以十进制格式展示。
hideLabels
当设置为 true
时,滑块控件上方的标签将隐藏。默认是 false
。
labelsFixed
固定滑块控件上方的标签。如果 true
,标签将固定在两端。否则,标签将随手柄移动。默认是 false
。
minDistance
两个选择的滑块值之间必须保持的最小距离。默认是 0.0
。
maxDistance
两个选定的滑块值之间必须保持的最大距离。默认是 CGFloat.greatestFiniteMagnitude
。
minLabelColor
最小值文本标签的颜色。如果未设置,则默认为tintColor。
maxLabelColor
最大值文本标签的颜色。如果未设置,则默认为tintColor。
handleColor
如果设置,则更新滑块的按钮颜色。默认为 tintColor
。
colorBetweenHandles
设置 colorBetweenHandles 属性将设置两个滑块之间的连线颜色。
handleBorderColor
如果设置,则更新滑块边框的颜色。默认为 tintColor
。
initialColor
当滑块的按钮设置为最小值和最大值时,设置整个滑块的颜色。默认为 nil。
disableRange
如果设置为 true
,控件将模拟普通滑动条并只有一个滑块而不是范围。
在这种情况下,selectedMinValue 将不再功能。请使用 selectedMaxValue 来确定用户选择的价值。
enableStep
如果设置为 true
,控件将捕捉到 minValue 和 maxValue 之间的每个 step
(属性)。默认值是禁用。
step
如果 enableStep
设置为 true
,此控件控步骤的值。例如,如果该值为 20,控件将捕捉到值 20、40、60...等。如果您启用 enableStep
属性,请设置此值。
handleImage
如果设置,则使用传递的图片用于滑块。
handleDiameter
如果设置,则会更新滑块的大小。默认为 16.0
。
selectedHandleDiameterMultiplier
如果设置,则更新当选中时滑块的缩放因子。默认为 1.7
。如果您不希望有缩放,设置为 1.0
。
lineHeight
设置行高。它将自动圆整角落。如果没有指定,默认值将是 1.0
。
handleBorderWidth
如果设置,它将会更新处理边框的大小。默认是 0.0
labelPadding
如果设置,它将更新标签与处理之间的填充大小。默认是 8.0
minLabelAccessibilityLabel
显示在无障碍模式下的最小值处理器的标签。如果没有设置,默认为空字符串。
maxLabelAccessibilityLabel
显示在无障碍模式下的最大值处理器的标签。如果没有设置,默认为空字符串。
minLabelAccessibilityHint
显示在无障碍模式下的最小值处理器的简短描述。如果没有设置,默认为空字符串。
maxLabelAccessibilityHint
无障碍模式下显示的最大值处理器的简短描述。如果未设置,则默认为空字符串。
func setupStyle()
在继承 RangeSeekSlider
并在 setupStyle()
中设置每个项目时,设计会在 Interface Builder 中得到反映。
要求
- Swift 3.0+
- iOS 9.0+
安装
Carthage
RangeSeekSlider 通过 Carthage 提供。要安装它,只需将以下行添加到您的 Cartfile
github "WorldDownTown/RangeSeekSlider"
⚠️ 警告⚠️
在使用 Carthage 安装时,@IBDesignable
无法使用(Carthage Issue)。但我们有一个解决方案在 Stack Overflow 上。它能够通过继承 RangeSeekSlider
来使用 @IBDesignable
。
@IBDesignable class CustomRangeSeekSlider: RangeSeekSlider {}
CocoaPods
可以通过 CocoaPods 获取 RangeSeekSlider。要安装它,只需将以下行添加到您的 Podfile
pod 'RangeSeekSliderClone'
手动方式
下载并将 RangeSeekSlider/Sources
文件夹放入您的项目。
作者
WorldDownTown, [email protected]
许可证
RangeSeekSlider 适用于 MIT 许可证。有关更多信息,请参阅 LICENSE 文件。