Les détails:animation Bizarre avec UIDynamics temporisées
- J'utilise
DispatchQueue.main.asyncAfter(deadline: ...
mettre à jour lesnapPoint
d'unUISnapBehavior
, ce qui provoque la vue associée au comportement de pression pour casser (avec animation) à la nouvelle point d'accrochage - Je veux mettre à jour les
snapPoint
de trois vues circulaires empilées les unes sur les autres. Je veux mettre à jour lesnapPoint
de chaque consécutivement. En d'autres termes, je veux que la vue A commence à animer en position à t0, la vue B commence à animer à t1, et la vue C commence à animer à t2.
Le problème:
Le calendrier des animations est bizarre. Par exemple:
- Si la différence entre t0, t1 et t2 est de 100 millisecondes, ils s'accrochent tous à leurs points d'accrochage respectifs exactement au même moment.
- Toutefois, si la différence entre t0, t1 et t2 est de 200 millisecondes, affichez A et affichez l'accrochage B à leurs positions respectives en même temps, mais affichez les accrochages C sur son nouveau point d'accrochage à un moment totalement différent. que les deux premiers.
- Encore plus bizarre, si la différence entre t0, t1 et t2 atteint 400 millisecondes, la vue A s'anime tout seul et les vues B et C s'animent ensemble.
- Enfin, si la différence atteint 500 millisecondes, chaque vue s'anime à une heure différente.
Que se passe-t-il ici?
'dispatchAfter' fait exactement cela; expédition * après * un certain délai, le délai réel peut être plus long, mais il ne sera pas plus court. Le délai réel dépend de ce que le système décide de faire. – Paulw11
C'est exactement ce que ... théoriquement. Si vous répétez les étapes ci-dessus avec des valeurs d'environ 100 millisecondes (0,1 seconde), tout se passe exactement au même moment. Si vous exécutez le même code avec une minuterie, l'animation se déroule comme prévu. Je ne sais pas pourquoi, mais c'est ce qui se passe en dépit de ce à quoi on pourrait s'attendre. – josephap
C'est la différence entre dire "Venez me voir * à * 4 heures" vs "Venez me voir * après * 4 heures". Dans le premier cas, je suis censé être là juste sur 4. Dans le second cas, 4:15 est OK. – Paulw11