UISlider 跟 UISwitch 有点儿类似,都是继承自 UIControl
既然 UISlider 是表示一个 CGRange,那么就有一个最大值(maximumValue)和一个最小值(minimumValue),既然 UISlider 又是一个选择器,那么就有一个当前的选择值(value),这三个值都是 UISlider 的属性。
同样的,UISlider 选择器被改变时,会触发 UIControlEventValueChanged 的事件,所以我们可以通过添加 addTarget::: 方法为事件添加处理方法。
1.创建 UISlider private lazy var mySlider: UISlider = {
let slider = UISlider()
///minimunmValue 当值可以改变时,滑动为最小。默认为0.0
slider.minimumValue = 0
//maximumValue 当值可以改变时,滑动为最大。默认为1.0
slider.maximumValue = 1
//当前值为多少
slider.value = 0.0
//小于当前滑动的颜色
slider.minimumTrackTintColor = .red
//大于当前滑动的颜色
slider.maximumTrackTintColor = RGBA(238)
//当前滑动按钮的颜色
slider.thumbTintColor = rgba(78, 139, 254, 1)
return slider
}()
1.1 滑动按钮可以使用图片 UIImage替换
mySlider.setThumbImage(image, for: .normal)
mySlider.setThumbImage(image, for: .highlighted)
1.2 滑块左边和右边使用图片替换(未测试)
mySlider.minimumValueImage = UIImage(named: "")
mySlider.maximumValueImage = UIImage(named: "")
1.3 滑动监听
//true 则实时输出,false:当滑动停止输出 默认为true
mySlider.isContinuous = false
mySlider.addTarget(self, action: #selector(sliderChange(_:)), for: .valueChanged)
///slider滑动事件
@objc private func sliderChange(_ slider: UISlider) {
let value = slider.value
print(value)
}
1.4 添加监听
mySlider.isContinuous = true
mySlider.addTarget(self, action: #selector(sliderChange(_:_:)), for: .valueChanged)
///slider滑动事件
@objc private func sliderChange(_ slider: UISlider, _ event: UIEvent) {
let value = slider.value
print(value)
if let touchEvent = event.allTouches?.first {
switch touchEvent.phase {
case .began:
print("开始拖动")
case .moved:
print("正在拖动")
case .ended:
print("结束拖动")
default:
break
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)