我有一个UISlider,我希望它停在某个值。这不是最大值,而是以编程方式提供的数字。
示例:UISlider的最大值为100.停止值为20.因此,用户不能拖动超过20。
我的代码:
@IBOutlet weak var precentLbl: UILabel!
@IBOutlet weak var precentSlider: UISlider!
var maxValuePrecent: Float = 20
override func awakeFromNib() {
precentSlider.addTarget(self, action: #selector(self.updateKmsLabel(sender:)), for: .allEvents)
}
// To use
@objc func updateKmsLabel(sender: UISlider!) {
let value = Int(sender.value)
DispatchQueue.main.async {
self.precentLbl.text = String(value) + "%"
}
if Float(value) > maxValuePrecent {
precentSlider.isEnabled = false //don't work
precentSlider.endEditing(true) //don't work
precentSlider.isContinuous = false //don't work
precentSlider.isSelected = false //don't work
}
}
this variant对我不起作用
答案 0 :(得分:0)
试试这个
@objc func updateKmsLabel(sender: UISlider!) {
let value = Int(sender.value)
DispatchQueue.main.async {
self.precentLbl.text = String(value) + "%"
}
if Float(value) >= maxValuePrecent {
precentSlider.isEnabled = false //don't work
DispatchQueue.main.async {
self.precentLbl.text = "\(maxValuePrecent)%"
sender.value = maxValuePrecent
}
}
}