Je ViewController avec Rating d'étoiles qui ressemble à ceci (sauf qu'il ya 10 étoiles)animation fluide avec minuterie et boucle dans iOS app
Lorsque l'utilisateur ouvre ViewController pour un objet qui ont pas d'étoiles Je veux attirer l'attention de l'utilisateur sur ces étoiles de façon très simple: animer la mise en évidence des étoiles (on pourrait voir un tel comportement sur certaines publicités dans le monde réel lorsque chaque lettre est mise en évidence les unes après les autres).
- Une étoile a souligné
- Deux étoiles ont mis en évidence
- Trois étoiles ont mis en évidence
- ......
- Désactiver tous
C'est donc la manière dont Je le fais
func delayWithSeconds(_ seconds: Double, completion: @escaping() ->()) {
DispatchQueue.main.asyncAfter(deadline: .now() + seconds) {
completion()
}
}
func ratingStarsAnimation() {
for i in 1...11 {
var timer : Double = 0.6 + Double(i)*0.12
delayWithSeconds(timer) {
ratingStars.rating = (i < 10) ? Double(i) : 0
}
}
}
Que se passe-t-il ici? J'ai une fonction appelée delayWithSeconds qui retarde l'action et j'utilise cette fonction pour retarder chaque surbrillance d'étoile. Et 0.6 est le délai initial avant le début de l'animation. Une fois toutes les étoiles mises en évidence, la dernière étape consiste à désactiver la mise en évidence de toutes les étoiles. Ce code fonctionne mais je ne peux pas dire qu'il est lisse.
Mes questions sont les suivantes:
- Comment puis-je changer + 0,6 Double (i) * 0,12 pour obtenir une animation fluide sentir?
- Je pense que ma solution avec des retards n'est pas bonne - comment puis-je résoudre les étoiles lisses en mettant mieux en évidence la tâche?
Pouvez-vous montrer que l'animation que vous avez accompli jusqu'à présent et celui que vous voulez. –
Comment puis-je le montrer? – moonvader
Partager la vidéo par dropBox. –