¿Cómo puedo tener mi UISlider ir de 1-100 en incrementos de 5?

InformationsquelleAutor Tyler29294 | 2010-03-25

6 Comentarios

  1. 160

    Agregar un destino como este:

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

    Y en el valueChanged función de establecer el valor al valor más cercano que es divisible por 5.

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

    Así que si usted necesita cualquier intervalo distinto de 5 simplemente configurarlo así:

    float interval = 5.0f;//set this
    [slider setValue:interval*floorf((slider.value/interval)+0.5f) animated:NO];
    • Me siento sinceramente estúpido. Siempre las cosas simples que me llegan.
    • Gracias, evitar que me hizo pensar mucho acerca de ella ^^ me hizo un ligero cambio, sin embargo: int incremento = 10; [numberOfAppsInFutur setValue:((int)((numberOfAppsInFutur.valor + incremento/2.) / incremento) * incremento) animadas:NO];
    • En caso de que ayuda, hay un ejemplo completo aquí.
  2. 50

    Un poco más elegante solución 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 se consigue pasos de 5. Usted puede leer más acerca de la configuración en mi post.

    • Link llega a un sitio con sólo ad
  3. 9

    Hay otra manera activa el motor de la funcionalidad. trabaja en un caso general,

    Ejemplo:

    rango de datos es 0 – 2800 y quiero que los incrementos de estar en 25 de los valores unitarios. Yo haría la siguiente

    1. configurar el rango de la barra deslizante a ser 0 – (maxRange/unitsteps).
    2. cuando el valor cambiado de método se ejecuta uso (int)control deslizante.valor * unitsteps .

    en el ejemplo de arriba de mi slider que sería establecido en IB rango de 0 – 112.
    y mi código sería (int)control deslizante.valor * 25.

    si usted entonces tiene un campo de texto que puede ser modificado para entrada directa de que usted acaba de hacer lo opuesto a establecer el valor del control deslizante a la [textfield.texto intValue]/unitsteps.

    • un efecto secundario de esto es que puede ayudar a imponer límites a la textfield valor…
    • Esta parecía la solución perfecta para mí.
  4. 6

    Para cualquier persona en busca de Swift en la sintaxis…

    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, acaba de crear una Acción de la función con el Asistente de Editor (lo hice en última instancia)…

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

    En swift 3, control deslizante, con incrementos de +/- 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)")
    
    }
  6. -4
    1. In storyboard mode, drag and drop a stepper and label.  the label will show the stepper values. 
    1. izquierda haga clic y arrastre la etiqueta y paso a paso para su controlador de vista como puntos de venta.

    nombre de la etiqueta como «stepperValue»

    1. arrastrar y soltar paso a paso de nuevo lo que es una func – me llama la mina «func»

    @IBAction func inc(sender: AnyObject) {

    stepperValue.texto = «(Int(paso a paso.valor) * 5 )»

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

    • Por favor, edita tu respuesta para una mayor legibilidad.

Dejar respuesta

Please enter your comment!
Please enter your name here