Według Apple documentation, możliwe jest programowe ustawienie wartości UISlider z płynną animacją. Próbuję to zrobić z niestandardowego kontrolera widoku, interfejs jest definiowany z storyboardu.Dlaczego mój animator UISlider nie jest animowany?
Kontekst
W moim przykładzie mam próbuje zaktualizować wartość suwaka z kontrolera widoku niestandardowego, interfejs użytkownika jest zdefiniowana z ujęć. Przykład pokazuje tylko jeden suwak.
Po zwolnieniu suwaka przez użytkownika wartość zostanie zresetowana na 0
.
Kodeks
import UIKit
class ViewController: UIViewController {
@IBOutlet var mySlider: UISlider!
@IBAction func resetSlider() {
mySlider.setValue(0, animated:true)
NSLog("Reset!")
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
resetSlider
jest powiązany ze zdarzeniem Touch Up Inside
.
Problem
Kiedy resetSlider
nazywa wartość ulega zmianie na interfejsie, ale nie animować (wartość po prostu „skacze” na 0). Moim celem jest przywrócenie wartości do zera.
Uwaga: "Resetuj!" wyświetla tylko raz (za kliknięcie), co oznacza, że resetSlider
nie jest wywoływana wiele razy.
Dlaczego ten program UISlider nie jest animowany?
The Video
Od IB jest tak wizualny, here is a video sytuacji, hasło jest code
Świetna myśl - niestety, według mojej wiadomości NSLog jest ona tylko raz wywoływana! – slifty
co zrobić, jeśli korzystasz z bloku animacji (patrz edytowana odpowiedź)? był problem z animacją suwaka we wczesnych wersjach, nie wiem, czy to może być problem. Czy to nie działa zarówno w systemie iOS 7, jak i iOS 8? – f3n1kc
Smutne, że to się stało, ponieważ to naprawia problem. Wygląda na to, że użycie 'setValue: animated:' w IBAction suwaka nie powoduje animacji, co jest prawdopodobnie błędem UIKit. –