原创首发
UIKit快速入门之UIStepper和UISlider(8)
UIStepper和UISlider
和UISwitch一样,UIStepper和UISlider同样都继承自UIControl。
本次的Demo效果如下:
UIStepper
UIStepper步进器就是一个左右加减的控件。
可配置属性
//触发形式
//--若设置为true,则长按会连续触发变化,若设置为false,只有在按击结束后,才会触发
var isContinuous: Bool
//长按是否触发
//--若设置为YES,则长按值会一直改变,若设置为NO,则一次点击只会改变一次值,其值不随长按时间变化。
var autorepeat: Bool
//设置步进器是否可以循环
//--其限制条件时必须设置步进器的最大和最小值
var wraps: Bool
//最小值
var minimumValue: Double
//最大值
var maximumValue: Double
//加减的梯度
var stepValue: Double
访问stepper的值
//The numeric value of the stepper.
var value: Double
自定义外观
// 设置背景图片
func setBackgroundImage(UIImage?, for: UIControl.State)
// 自定义默认按钮图标
func setDecrementImage(UIImage?, for: UIControl.State)
func setIncrementImage(UIImage?, for: UIControl.State)
//自定义分割线
func setDividerImage(UIImage?, forLeftSegmentState: UIControl.State, rightSegmentState: UIControl.State)
添加事件
stepper.addTarget(self, action: #selector(ViewController.onStepperValueChange(_:)), for: .valueChanged)
@objc
func onStepperValueChange(_ stepper:UIStepper) {
// 一直点击增加:依次循环输出1、3、5、7、9、13、5、7、9
print("stepper value:\(stepper.value)")
label.text = "计步器的值:\(stepper.value)"
}
完整代码
class ViewController: UIViewController {
lazy var label: UILabel = {
let lable = UILabel()
lable.frame = CGRect(x: 20, y: 64, width: 150, height: 40)
lable.textColor = UIColor.black
return lable
}()
lazy var stepper:UIStepper = {
let stepper = UIStepper()
stepper.frame = CGRect(x: 20, y: 130, width: 100, height: 40)
//添加事件
stepper.addTarget(self, action: #selector(ViewController.onStepperValueChange(_:)), for: .valueChanged)
//设置初始值
stepper.value = 1.0
//触发形式
stepper.isContinuous = false
stepper.maximumValue = 10.0
stepper.minimumValue = 1.0
//可以循环
stepper.wraps = true
// 每次加减2
stepper.stepValue = 2
//背景颜色
stepper.backgroundColor = UIColor.gray
//改变大小
//stepper.transform = CGAffineTransform(scaleX: 2.0, y: 2.0)
return stepper
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(label)
view.addSubview(stepper)
//显示计步器的初始值到lable 上
label.text = "计步器的值:\(stepper.value)"
}
@objc
func onStepperValueChange(_ stepper:UIStepper) {
// 一直点击增加:依次循环输出1、3、5、7、9、13、5、7、9
print("stepper value:\(stepper.value)")
label.text = "计步器的值:\(stepper.value)"
}
}
UISlider
slider和大部分属性和stepper相同。
可配置属性和方法
open class UISlider : UIControl, NSCoding {
// 获取当前值,默认 0.0
open var value: Float
// 最小值, 默认0.0
open var minimumValue: Float
// 最大值,默认1.0
open var maximumValue: Float
//触发形式
open var isContinuous: Bool
//进度槽两侧图标默认nil, min左边图标,max 右边图标
open var minimumValueImage: UIImage?
open var maximumValueImage: UIImage?
//滑块两边进度颜色, min左边槽的颜色,max右边槽的颜色
//对应 setMinimumTrackImage,setMaximumTrackImage
open var minimumTrackTintColor: UIColor?
open var maximumTrackTintColor: UIColor?
@available(iOS 5.0, *)
open var thumbTintColor: UIColor?
//设置滑块动画
open func setValue(_ value: Float, animated: Bool)
//设置滑块图标
open func setThumbImage(_ image: UIImage?, for state: UIControl.State
open func thumbImage(for state: UIControl.State) -> UIImage?
}
如何注释不理解,可以看下图:
示例代码
lazy var slider:UISlider = {
let slider = UISlider()
slider.frame = CGRect(x: 20, y: 200, width: 200, height: 40)
//添加事件
slider.addTarget(self, action: #selector(ViewController.onSliderValueChange(_:)),
for: .valueChanged)
//设置初始值
slider.value = 1.0
//触发形式
slider.isContinuous = false
slider.maximumValue = 10.0
slider.minimumValue = 1.0
slider.minimumTrackTintColor = UIColor.red
slider.maximumTrackTintColor = UIColor.orange
return slider
}()