web-dev-qa-db-ja.com

iOSスライダーの値を整数に制限するにはどうすればよいですか?

_Swift 3_とXcode 8.2を使用しています。 Swiftでかなり新しい。水平方向のUISliderを使用して、1から16までのボリュームを最小値と最大値として制御します。print()を実行すると、フロート値が返されます。値を整数に制限するにはどうすればよいですか?

_ @IBOutlet var ringValue: UISlider!

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

前もって感謝します!

10
Keyur Padalia
@IBAction func SliderValueChanged(_ sender: UISlider) {
        showValueSlider.text = String(format: "The value is:%i",Int(sender.value))
    }
5
Bill Vo

valueUISliderのプロパティはFloatタイプであるため、変更することはできませんが、Int(sender.value)

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

スライダーをステップのみに配置したい場合は、次のようにします。

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

この例では、最小値と最大値を設定したと想定しています。これで、ユーザーがスライドすると、スライダーは位置から位置へとジャンプします。

9
jboi

最小値と最大値として1から16までの音量を制御するための水平UISliderがあります...

デフォルトでは、valueプロパティの最小値は0.0で、最大値は1.0です。

スライダーの値に基づいて1から16までの整数を取得したい場合は、 @ NiravDが推奨 を-pretty simple-mathsで追加する必要があります:)

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

print(Int(sender.value))とすると、スライダーが最大値(1.0)に達した場合に1を出力します。他のすべての値は、1.0が0として出力されるよりも小さいです。

2
Ahmad F

スライダーをよりスムーズにして、一度に1つの結果を取得するには(ユーザーがスライドを停止したとき)、viewDidLoad内で次の行を使用できます。

ringValue.isContinuous = false

次に、jboiの回答が好きだった他の回答の1つからの結果をどのように処理するかを選択できるので、離散値を取ります。

2
mike vorisis