UIStepper(步进控制器)从名字上就能大致了解其功能。不同于UISlider,UIStepper是进行离散式数据调节的常用视图控件。
一、UIStepper基本属性的使用
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//定义UIStepper
let stepper = UIStepper()
//设置UIStepper的位置
stepper.center = CGPoint(x: 100, y: 200)
//stepper绑定的事件是否连续触发
stepper.isContinuous = true
//是否自动重复
stepper.autorepeat = true
//是否循环
stepper.wraps = true
//控制器最小值
stepper.minimumValue = 1
//控制器最大值
stepper.maximumValue = 10
//步长
stepper.stepValue = 1
//控件颜色
stepper.tintColor = UIColor.red
//添加到主视图
self.view.addSubview(stepper)
//绑定触发方法
stepper.addTarget(self, action: #selector(click), for: .valueChanged)
}
@objc func click(stepper:UIStepper)
{
print(stepper.value)
}
}
运行结果如下所示:
上面的属性中,isContiunous属性设置触发方法是否连续执行,当用户按住步进控制器上某个按钮不放时,如果属性设置为Bool值真,添加的触发方法就会一直连续执行,步进控制器的值每改变一次方法就执行一次。autorepeat属性从字面上理解为自动重复,当autorepeat属性设置为Bool值真时,用户如果按住步进控制器按钮不放,步进控制器的值就会一直连续改变;若autorepeat属性设置为Bool值假,直到用户手指抬起完成一次单击动作,步进控制器的值才会改变,触发方法才会执行。
而warps属性设置步进控制器的值是否循环,如果设置Bool值真,当值增加到最大时,用户继续单击增加按钮,值就会从最小值重新开始增加;反之,若设置Bool值假,当步进控制器到达极值时,相应的按钮会被禁用。
二、自定义UIStepper按钮图片
在上面的例子中我们可以看到,系统的UIStepper默认显示的是一个减号和一个加号,单击减号值减小,单击加号值增加。当然,我们也可以通过以下方法自定义两个按钮图片:
//设置减按钮图片
stepper.setDecrementImage(UIImage(named: "image")?.withRenderingMode(.alwaysOriginal), for: .normal)
//设置加按钮图片
stepper.setIncrementImage(UIImage(named: "image")?.withRenderingMode(.alwaysOriginal), for: .normal)
只设置减按钮图片的效果如下所示: