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

问题描述 投票:0回答:8

我有一个水平

UISlider
来控制音量从1到16作为最小值和最大值,但当我这样做时它会返回浮点值。
如何将 UISlider 值限制为整数?

print()


ios swift uislider
8个回答
16
投票

@IBOutlet var ringValue: UISlider! @IBAction func ringVolumeSliderChange(_ sender: UISlider) { print(sender.value) }

 
value 的属性是
UISlider
类型,因此您无法更改它,但可以使用
Float
将其转换为
Int

Int(sender.value)



13
投票

@IBAction func ringVolumeSliderChange(_ sender: UISlider) { print(Int(sender.value)) }

在此示例中,我假设您已设置最小值和最大值。现在,当用户滑动时,滑块会从一个位置跳到另一个位置。


6
投票


5
投票
@IBAction func SliderValueChanged(_ sender: UISlider) { showValueSlider.text = String(format: "The value is:%i",Int(sender.value)) }

:

viewDidLoad

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


2
投票
我有一个水平UISlider来控制音量从1到16最小 和最大值...

默认情况下,
ringValue.isContinuous = false

属性的最小值为0.0,最大值为1.0。


如果你想根据滑块值获取 1 到 16 之间的整数,你应该按照

@NiravD 建议

进行额外的 - 相当简单 - 数学计算:) value

将其设为 
@IBAction func ringVolumeSliderChange(_ sender: UISlider) { print(Int((sender.value * 15).rounded()) + 1) }

,当滑块达到最大值 (1.0) 时,它会打印 1,所有其他小于 1.0 的值将打印为 0。

    


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 }



0
投票
© www.soinside.com 2019 - 2024. All rights reserved.