如何将iOS滑块值限制为整数?

Key*_*lia 10 uislider ios swift

我正在使用Swift 3和Xcode 8.2.在斯威夫特很新.我有一个水平UISlider来控制从1到16的音量作为最小值和最大值,并且当我这样做时它返回浮点值print().如何将其值限制为整数?

 @IBOutlet var ringValue: UISlider!

 @IBAction func ringVolumeSliderChange(_ sender: UISlider)
 {
        print(sender.value)
 }
Run Code Online (Sandbox Code Playgroud)

提前致谢!

Nir*_*v D 15

value属性UISliderFloat类型,所以你不能改变它,但你可以将其转换为Int使用Int(sender.value).

@IBAction func ringVolumeSliderChange(_ sender: UISlider) {
    print(Int(sender.value))
}
Run Code Online (Sandbox Code Playgroud)

  • 您还可以将滑块的值设置为int转换后的值,以使滑块不会随意变化。但这有点符合您选择的价值。在IBAction中看起来像这样:let iSliderValue = Int(sender.value)`sender.value = Float(iSliderValue) (2认同)

jbo*_*boi 8

如果您希望Slider仅在步骤中定位,请执行以下操作:

@IBAction func ringVolumeSliderChange(_ sender: UISlider)
{
    sender.setValue(sender.value.rounded(.down), animated: true)
    print(sender.value)
}
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我假设你已经设置了最小值和最大值.现在,当用户滑动时,滑块会从一个位置跳到另一个位置.


mik*_*sis 5

为了使滑块更平滑并一次获取一个结果(当用户停止滑动时),您可以在内部使用这一行viewDidLoad

ringValue.isContinuous = false
Run Code Online (Sandbox Code Playgroud)

然后您可以选择如何处理其他答案之一的结果。我喜欢 jboi 的答案,因此它将采用离散值。


小智 5

@IBAction func SliderValueChanged(_ sender: UISlider) {
        showValueSlider.text = String(format: "The value is:%i",Int(sender.value))
    }
Run Code Online (Sandbox Code Playgroud)