Comment faire pour que mon UISlider
passe de 1-100
par incréments de 5
?
Ajoutez une cible comme celle-ci:
slider.continuous = YES; [slider addTarget:self action:@selector(valueChanged:) forControlEvents:UIControlEventValueChanged];
Et dans la fonction valueChanged, définissez la valeur sur la valeur la plus proche divisible par 5.
[slider setValue:((int)((slider.value + 2.5) / 5) * 5) animated:NO];
Une solution légèrement plus élégante dans Swift pourrait être quelque chose comme ça
let step: Float = 5 @IBAction func sliderValueChanged(sender: UISlider) { let roundedValue = round(sender.value / step) * step sender.value = roundedValue // Do something else with the value }
De cette façon, vous obtenez des étapes de 5. Vous pouvez en savoir plus sur la configuration dans mon message .
Il existe une autre façon d'activer la fonctionnalité de stepper. travaille dans un cas général
Exemple:
La plage de données est comprise entre 0 et 2800 et je souhaite que les incréments soient en 25 valeurs unitaires. Je ferais ce qui suit
Dans l'exemple ci-dessus, mon slider serait défini sur IB entre 0 et 112. Mon code serait (int) slider.value * 25.
Si vous avez ensuite un champ de text qui peut être modifié pour l'input directe, vous devez simplement faire l'inverse en définissant la valeur du slider sur [textfield.text intValue] / unitsteps.
Pour ceux qui searchnt la syntaxe Swift …
override func viewDidLoad() { super.viewDidLoad() mySlider.addTarget(self, action: "sliderValueDidChange:", forControlEvents: .ValueChanged) } func sliderValueDidChange(sender:UISlider!) { //Set value to the nearest 5... print((Float)((Int)((sender.value + 2.5) / 5) * 5)) sender.setValue((Float)((Int)((sender.value + 2.5) / 5) * 5), animated: false) }
Alternativement, il suffit de créer une fonction Action avec l'Assistant Editor (ce que j'ai fait finalement) …
@IBAction func mySliderValueChanged(sender: UISlider) { //Set value to the nearest int sender.setValue(Float(roundf(sender.value)), animated: false) }
Dans swift 3, slider avec incréments +/- 7:
@IBOutlet weak var sldComponent: UISlider!
…
sldComponent.addTarget(self, action: #selector(_sldComponentChangedValue),for: .valueChanged)
…
func _sldComponentChangedValue(sender: UISlider!) { self.sldComponent.setValue((round(sender.value / 7) * 7), animated: false) print("\(sender.value)") }
1. In storyboard mode, drag and drop a stepper and label. the label will show the stepper values.
label de nom comme "stepperValue"
@IBAction func inc (expéditeur: AnyObject) {
stepperValue.text = "(Int (stepper.value) * 5)"
click le stepper et il va augmenter de 5