JOCircularSlider
JOCircularSlider 是一个高度可定制和可重用的 iOS 循环滑动控件,模仿旋钮控制的行为。它不使用预设图片,其所有组件都是完全在代码中绘制的,因此它极具适应各种设计和主题的能力。
示例
要运行示例项目,请克隆仓库,然后首先从 Example 目录中运行 pod install
要求
- iOS 10.0+
- Xcode 10.0
安装
JOCircularSlider 可以通过 CocoaPods 获得。要安装它,只需将以下行添加到您的 Podfile 中
pod 'JOCircularSlider'
JOCircularSlider 还可以通过 Carthage 获得。要安装它,只需将以下行添加到您的 Cartfile
github "ouraigua/JOCircularSlider"
使用
- 视觉上
将一个 UIView 拖拽到你的 Storyboard 中,将其类设置为 CircularSlider,然后根据你的喜好开始视觉化定制设计。所有参数都是 IBInspectable,因此你可以直接在属性检查器标签中配置滑块,无需编写任何代码。
- 编程上
import JOCircularSlider
let circularSlider = CircularSlider(frame: aFrame)
circularSlider.startAngle = 230
circularSlider.endAngle = 310
circularSlider.minimumValue = 0
circularSlider.maximumValue = 60
circularSlider.isClockwise = false
这些只是为你可以配置的许多滑块参数中的一部分。
滑块的 min/max 值是 IBInspectable 的,默认分别为 0.0 和 100.0。它们也支持负数和正数或它们的混合使用。
@IBInspectable open var minimumValue: CGFloat = 0
@IBInspectable open var maximumValue: CGFloat = 100
滑块的 value
属性具有读写权限,并设计得与 UIKit 的通用 UISlider 的熟悉 value 属性类似。
/**
This value will be pinned to minimumValue/maximumValue
The default value of this property is 0.0.
*/
@IBInspectable open var value: CGFloat // { get set }
为了接收值变更通知,请使用 Target-Action
模式,它是 UIControl 内在的一部分,如下所示
/**
Add target/action for particular event.
- parameter target: The object whose action method is called
- parameter action: A selector identifying the action method to be called
- parameter Event: The control-specific events for which the action method is called
So far I've only implemented the following:
UIControl.Event.valueChanged
UIControl.Event.editingDidBegin
UIControl.Event.editingDidEnd
*/
circularSlider.addTarget(target: Any?, action: Selector, for: UIControl.Event)
要控制显示值的标签的外观,请使用以下
open func setLabelFont(named: String, textColor: UIColor, multiplier: CGFloat)
open func setLabelShadow(color: UIColor, opacity: Float = 1, offset: CGSize = CGSize(width: 1, height: 1), radius: CGFloat = 0)
你还可以指定此标签应显示的小数位数。默认为 0.0,除非例如值在 [0.0, 1.0] 区间内。
@IBInspectable open var labelDecimalPlaces: Int = 0
如果你需要重写标签中的文本,则只需在针对事件 UIControl.Event.valueChanged
的 Target-Action
方法的选择器内部实现以下函数。
open func setLabelText(_ text: String?)
参考
该项目灵感来源于
作者
Jalal Ouraigua, [email protected]
许可协议
JOCircularSlider 在 MIT 许可协议下提供。更多信息请参阅 LICENSE 文件。