J'utilise Swift 3
Et Xcode 8.2. Assez nouveau chez Swift. J'ai un UISlider
horizontal pour contrôler le volume de 1 à 16 en tant que valeur min et max, et il renvoie des valeurs flottantes lorsque je fais print()
. Comment puis-je limiter sa valeur à un entier?
@IBOutlet var ringValue: UISlider!
@IBAction func ringVolumeSliderChange(_ sender: UISlider)
{
print(sender.value)
}
Merci d'avance!
@IBAction func SliderValueChanged(_ sender: UISlider) {
showValueSlider.text = String(format: "The value is:%i",Int(sender.value))
}
value
la propriété de UISlider
est de type Float
donc vous ne pouvez pas changer cela mais vous pouvez la convertir en Int
en utilisant Int(sender.value)
.
@IBAction func ringVolumeSliderChange(_ sender: UISlider) {
print(Int(sender.value))
}
Si vous souhaitez que votre curseur ne se positionne qu'aux étapes, procédez comme suit:
@IBAction func ringVolumeSliderChange(_ sender: UISlider)
{
sender.setValue(sender.value.rounded(.down), animated: true)
print(sender.value)
}
Dans cet exemple, je suppose que vous avez défini des valeurs min et max. Maintenant, le curseur saute de position en position lorsque l'utilisateur se déplace.
J'ai un UISlider horizontal pour contrôler le volume de 1 à 16 comme valeur min et max ...
Par défaut, la valeur minimale de la propriété value
est 0,0 et la valeur maximale est 1,0.
Si vous voulez obtenir un nombre entier de 1 à 16 en fonction de la valeur du curseur, vous devez faire quoi @ NiravD suggéré avec des mathématiques extra-assez simples :)
@IBAction func ringVolumeSliderChange(_ sender: UISlider) {
print(Int((sender.value * 15).rounded()) + 1)
}
En le laissant comme print(Int(sender.value))
, il imprime 1 si le curseur a atteint sa valeur maximale (1.0), toutes les autres valeurs sont inférieures à 1.0 imprimées en 0.
Pour rendre le curseur plus fluide et obtenir un résultat à la fois (lorsque l'utilisateur arrête de glisser), vous pouvez utiliser cette ligne dans viewDidLoad
:
ringValue.isContinuous = false
Ensuite, vous pouvez choisir la façon dont vous allez gérer le résultat de l'une des autres réponses J'ai aimé la réponse de jboi afin qu'elle prenne des valeurs discrètes.