iphone ios uislider

iphone - UISlider con incrementos de 5



ios (6)

¿Cómo hago que mi UISlider pase de 1-100 a 1-100 en incrementos de 5 ?


Agrega un objetivo como este:

slider.continuous = YES; [slider addTarget:self action:@selector(valueChanged:) forControlEvents:UIControlEventValueChanged];

Y en la función valueChanged, establezca el valor en el valor más cercano que sea divisible por 5.

[slider setValue:((int)((slider.value + 2.5) / 5) * 5) animated:NO];


En swift 3, deslizador con incrementos +/- 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)") }


Hay otra forma de activar la funcionalidad paso a paso. trabaja en un caso general

Ejemplo:

el rango de datos es 0 - 2800 y quiero que los incrementos estén en valores de 25 unidades. Yo haria lo siguiente

  1. configure el rango del control deslizante en 0 - (maxRange / unitsteps).
  2. cuando se ejecute el método de valor cambiado use (int) slider.value * unitsteps.

en el ejemplo anterior, mi control deslizante se establecería en IB entre 0 y 112. y mi código sería (int) control deslizante.valor * 25.

Si luego tiene un campo de texto que se puede modificar para la entrada directa, simplemente haría lo contrario, establezca el valor del control deslizante en [textfield.text intValue] / unitsteps.


Para quien busca la sintaxis 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) }

Alternativamente, simplemente cree una función de Acción con el Editor Asistente (lo que hice en última instancia) ...

@IBAction func mySliderValueChanged(sender: UISlider) { //Set value to the nearest int sender.setValue(Float(roundf(sender.value)), animated: false) }


Una solución un poco más elegante en Swift podría ser algo como esto

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 esta manera obtendrás pasos de 5. Puedes leer más sobre la configuración en mi post .


1. In storyboard mode, drag and drop a stepper and label. the label will show the stepper values.

  1. Haga clic con el botón izquierdo y arrastre ambas etiquetas y pasos a su controlador de vista como puntos de venta.

etiqueta de nombre como "stepperValue"

  1. Arrastrar y soltar stepper otra vez haciéndolo una func- llamé mía "func"

@IBAction func inc (sender: AnyObject) {
stepperValue.text = "(Int (stepper.value) * 5)"

haga clic en el paso a paso y se incrementará en 5