KWStepper
KWStepper 是一个使用 Swift 编写的步进控制器。与 UIStepper 不同,KWStepper 可以完全自定义 UI,并提供回调,以便定制 UX。
KWStepper 最初是为 Addo Label's Counters• 在 Objective-C 中创建的,现已在 Swift 中供您享用
特性
- 允许完全自定义 UI。
- 提供了设置不同递减和递增步长属性的属性。
- 提供可选的回调,用于响应用户操作和控制事件,以及定制 UX。
- 支持方法链,便于配置和事件处理。
安装
CocoaPods
KWStepper 通过 CocoaPods 提供。要安装它,请简单地将以下行添加到您的 Podfile
中
platform :ios, '8.0'
use_frameworks!
pod 'KWStepper'
Carthage
要使用 Carthage 集成 KWStepper,请将以下行添加到您的 Cartfile
github "kyleweiner/KWStepper"
手动
如果您不想使用依赖管理器,只需将 源文件 复制到您的项目中。
使用方法
尝试示例项目!
var stepper: KWStepper!
@IBOutlet weak var countLabel: UILabel!
@IBOutlet weak var decrementButton: UIButton!
@IBOutlet weak var incrementButton: UIButton!
stepper = KWStepper(decrementButton: decrementButton, incrementButton: incrementButton)
使用 valueChangedCallback
属性响应用户的动作事件。
stepper.valueChangedCallback = { stepper in
self.countLabel.text = String(stepper.value)
}
或者,使用目标动作模式。
stepper.addTarget(self, action: #selector(stepperDidChange), for: .valueChanged)
配置 KWStepper
除了 continuous
属性外,KWStepper 提供了所有由 UIStepper 提供的功能以及更多。
stepper.autoRepeat = true
stepper.autoRepeatInterval = 0.10
stepper.wraps = true
stepper.minimumValue = 0
stepper.maximumValue = 8
stepper.value = 0
stepper.incrementStepValue = 1
stepper.decrementStepValue = 1
还支持方法链式调用
stepper
.wraps(true)
.maximumValue(10)
.stepValue(2)
.valueChanged { stepper in
// ...
}
如果需要,可以通过 roundingBehavior
修改递增和递减的舍入行为。
KWStepperDelegate
采用 KWStepperDelegate
可以为定制 UX 提供以下可选代理方法。
可选 func KWStepperDidDecrement()
可选 func KWStepperDidIncrement()
可选 func KWStepperMaxValueClamped()
可选 func KWStepperMinValueClamped()
可选 func KWStepperDidEndLongPress()
回调函数
KWStepper提供了以下回调函数
valueChangedCallback
decrementCallback
incrementCallback
maxValueClampedCallback
minValueClampedCallback
longPressEndedCallback
也支持回调函数的链式调用
stepper
.valueChanged { _ in }
.didDecrement { _ in }
.didIncrement { _ in }
.maxValueClamped { _ in }
.minValueClamped { _ in }
.longPressEnded { _ in }
// `maxValueClampedCallback` and `minValueClampedCallback` may be set simultaneously.
stepper.valueClamped { stepper in
// ...
}
在示例项目中,当stepper值改变时,使用valueChanged(_:)
更新计数标签文本。valueClamped(:_)
用于在到达限制并且将wraps
属性设置为false
时,显示UIAlertController
。
作者
KWStepper由Kyle Weiner和贡献者编写。
许可证
KWStepper受MIT许可证约束。详情请见LICENSE文件。