ÉDITÉ
Après discussion, je pensais que je clarifier les différences entre les deux solutions proposées:
- En utilisant la méthode UISlider intégrée
.setValue(10.0, animated: true)
.
- Encapsulation de cette méthode dans un
UIView.animateWithDuration
.
Puisque l'auteur demande explicitement une modification qui prendra 0.5s --- éventuellement déclenchée par une autre action --- la deuxième solution est de préférer. A titre d'exemple, considérons qu'un bouton est connecté à une action qui définit le curseur sur sa valeur maximale.
@IBOutlet weak var slider: UISlider!
@IBAction func buttonAction(sender: AnyObject) {
// Method 1: no animation in this context
slider.setValue(10.0, animated: true)
// Method 2: animates the transition, ok!
UIView.animateWithDuration(0.5, delay: 0.0, options: .CurveEaseInOut, animations: {
self.slider.setValue(10.0, animated: true) },
completion: nil)
}
Exécution d'une application simple unique UIVIewController
avec seulement les objets UISlider
et UIButton
présentent des rendements les résultats suivants.
- Method 1: diapositive instantanée (même si
animated: true
)
- Method 2: anime transition. Notez que si nous définissons
animated: false
dans ce contexte, la transition sera instantanée.
Avez-vous regardé les documents pour 'UISlider'? Il existe une méthode pour définir une valeur avec animation. – rmaddy
Cette question est essentiellement une copie de http://stackoverflow.com/questions/20539913/uiview-animatewithduration-not-working-with-uislider sauf que la réponse (aussi simple soit-elle) est en Objective-C. – rmaddy
@rmaddy Merci pour tout ce que je ressens comme vous avez répondu à plusieurs questions pour moi. Votre très généreux avec votre temps et aider les gens ici et je l'apprécie. –