KnobFramework 2.0.0

KnobFramework 2.0.0

Jalal Ouraigua 维护。



Version Platform Language License Twitter: @ouraigua Readme Score codebeat badge

KnobFramework

KnobFramework 是一个高度可自定义、可重用的 iOS环形滑块,模仿旋钮控件的行徑。它不使用预设图片,并且它的所有组件都是用代码绘制,使其能极其适应各种设计和主题。

示例

要运行示例项目,首先克隆仓库,然后在 Example 目录中运行 pod install

需求

  • iOS 10.0+
  • Xcode 10.0

安装

KnobFramework 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile。

pod 'KnobFramework'

使用方法

  1. 视觉上

将 UIView 拖拽到故事板中,将其类更改为 CircularSlider,并开始根据您的喜好进行视觉定制。所有参数都是 IBInspectable 类型,因此您可以直接从属性检查器选项卡配置滑动条,而不需要编写任何代码。

  1. 以编程方式
import KnobFramework

let circularSlider = CircularSlider(frame: aFrame)
circularSlider.startAngle = 230
circularSlider.endAngle = 310
circularSlider.minimumValue = 0
circularSlider.maximumValue = 60
circularSlider.isClockwise = false

这是您可以配置滑动条的许多参数中的一些。

滑动条的最小/最大值是 IBInspectable 类型的,默认分别为 0.0 和 100.0。它们也支持负值和正值或它们的组合。

@IBInspectable open var minimumValue: CGFloat = 0
@IBInspectable open var maximumValue: CGFloat = 100

滑动条的 value 属性是可读可写的,并设计成与 UIKit 中通用 UISlider 的值属性类似工作。

/**
This value will be pinned to minimumValue/maximumValue
The default value of this property is 0.0. 
*/
@IBInspectable open var value: CGFloat  // { get set }

要获取值更改通知,请使用自中控件 Controls 内在的 Target-Action 模式,如下所示

/**
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, 1.0] 范围内,否则默认值为 0.0。

@IBInspectable open var labelDecimalPlaces: Int = 0

如果您需要覆盖标签中的文本,请只需在 Target-Action 方法的事件 UIControl.Event.valueChanged 选择器内实现以下函数。

open func setLabelText(_ text: String?)

参考文献

本项目的灵感来源于

作者

Jalal Ouraigua, [email protected]

许可证

KnobFramework 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。