我有一个水平
UISlider
来控制音量从1到16作为最小值和最大值,但当我这样做时它会返回浮点值。如何将 UISlider 值限制为整数?
print()
@IBOutlet var ringValue: UISlider!
@IBAction func ringVolumeSliderChange(_ sender: UISlider)
{
print(sender.value)
}
value
的属性是 UISlider
类型,因此您无法更改它,但可以使用 Float
将其转换为 Int
。Int(sender.value)
@IBAction func ringVolumeSliderChange(_ sender: UISlider) {
print(Int(sender.value))
}
在此示例中,我假设您已设置最小值和最大值。现在,当用户滑动时,滑块会从一个位置跳到另一个位置。
@IBAction func SliderValueChanged(_ sender: UISlider) {
showValueSlider.text = String(format: "The value is:%i",Int(sender.value))
}
:
viewDidLoad
然后您可以选择如何处理其他答案之一的结果。我喜欢 jboi 的答案,所以它将采用离散值。
默认情况下,
ringValue.isContinuous = false
属性的最小值为0.0,最大值为1.0。
如果你想根据滑块值获取 1 到 16 之间的整数,你应该按照 @NiravD 建议
将其设为
@IBAction func ringVolumeSliderChange(_ sender: UISlider) {
print(Int((sender.value * 15).rounded()) + 1)
}
,当滑块达到最大值 (1.0) 时,它会打印 1,所有其他小于 1.0 的值将打印为 0。
var slideValue: String = "0"
@objc private func didSliderValueChanged(_ sender: UISlider) {
let formattedValue = String(format: "%.0f", sender.value)
if let floatValue = Float(formattedValue) {
sender.value = floatValue
}
guard formattedValue != slideValue else {
return
}
//This part is optional, and can make slider more interactive
UIImpactFeedbackGenerator(style: .medium).impactOccurred()
slideValue = formattedValue
}