cómo repetir la animación para siempre en Swift(HUGE_VALF)?
cabasicanimation (3)
De acuerdo con los documentos, la forma de repetir una CABasicAnimation para siempre es establecer su repeatCount
en HUGE_VALF
.
Pero en Swift, HUGE_VALF
causa un error de compilación. Swift no parece saber acerca de la biblioteca estándar (o donde reside esta constante).
¿Qué hago ahora?
Establezca repeatCount
en Float.infinity
. Esto compila y funciona.
Con toda probabilidad, HUGE_VALF
era un valor heredado en cualquier caso.
Aún así, es un poco sorprendente que Swift no vea estos nombres de constantes numéricas. <stdlib.h>
importar <stdlib.h>
en el encabezado puente, pero no ayudó.
Pero, por favor, mira ahora la respuesta de Martin R. Desde el momento en que publiqué mi respuesta, Apple ha declarado explícitamente su respuesta preferida: use .greatestFiniteMagnitude
. ¡Es casi lo mismo que .infinity
pero no del todo!
La documentación actual para la propiedad CAMediaTiming
de CAMediaTiming
indica:
Establecer esta propiedad en
greatestFiniteMagnitude
hará que la animación se repita para siempre.
Y eso compila sin problemas:
let ba = CABasicAnimation()
ba.repeatCount = .greatestFiniteMagnitude
La razón por la que HUGE_VALF
no se importa a Swift es que se define como una macro "no trivial" en <math.h>
:
# define HUGE_VALF __builtin_huge_valf()
Utilizo el valor "ENORME". es un build_in readonly var;