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
greatestFiniteMagnitudehará 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;