Selon les documents, la façon de répéter une CABasicAnimation pour toujours est de définir son repeatCount
sur HUGE_VALF
.
Mais dans Swift, HUGE_VALF
provoque une erreur de compilation. Swift ne semble pas connaître la bibliothèque standard (ou où réside cette constante)).
Qu'est-ce que je fais maintenant?
Définissez repeatCount
sur Float.infinity
. Cela compile et fonctionne.
Selon toute probabilité, HUGE_VALF
était une valeur héritée dans tous les cas.
Pourtant, il est un peu surprenant que ces noms de constantes numériques ne soient pas vus par Swift. J'ai essayé d'importer <stdlib.h>
dans l'en-tête de pontage mais cela n'a pas aidé.
Mais voyez maintenant la réponse de Martin R. Depuis le moment où j'ai posté ma réponse, Apple a indiqué explicitement sa réponse préférée: utilisez .greatestFiniteMagnitude
. C'est presque la même chose que .infinity
mais pas tout à fait!
La documentation actuelle pour la propriété repeatCount
de CAMediaTiming
indique:
La définition de cette propriété sur
greatestFiniteMagnitude
entraînera la répétition permanente de l'animation.
Et cela se compile sans problème:
let ba = CABasicAnimation()
ba.repeatCount = .greatestFiniteMagnitude
La raison pour laquelle HUGE_VALF
n'est pas importé dans Swift est qu'il est défini comme une macro "non triviale" dans <math.h>
:
# define HUGE_VALF __builtin_huge_valf()
J'utilise la valeur "ÉNORME". c'est un build_in var en lecture seule;