Ответ 1
Попробуйте animation.repeatCount = HUGE_VALF;
как я могу сделать мой CAKeyframeAnimation
бесконечным числом повторений?
Я попробовал animation.repeatCount = -1;
, но он повторяется только один раз.
Попробуйте animation.repeatCount = HUGE_VALF;
Вы также можете использовать
animation.repeatCount = INFINITY;
Это точно так же, как HUGE_VALF, но я предпочитаю INFINITY, поскольку он говорит сам по себе.
Из документации для протокола CAMediaTiming:
Установка этого свойства в значение
HUGE_VALF
приведет к повторному воспроизведению анимации.
Просто перейдите к определению!
Не важно, что это будет: либо HUGE_VALF, либо INFINITY.
Потому что:
(math.h:)
#if defined(__GNUC__)
# define HUGE_VAL __builtin_huge_val()
# define HUGE_VALF __builtin_huge_valf()
# define HUGE_VALL __builtin_huge_vall()
# define NAN __builtin_nanf("0x7fc00000")
#else
# define HUGE_VAL 1e500
# define HUGE_VALF 1e50f
# define HUGE_VALL 1e5000L
# define NAN __nan()
#endif
#define INFINITY HUGE_VALF
и, наконец, (согласно math.c):
/* FUNCTION: __builtin_huge_valf */
inline float __builtin_huge_valf(void) { return 1.0f/0.0f; }
Итак, каждый вариант будет в порядке:
animation.repeatCount = INFINITY;
animation.repeatCount = HUGE_VALF;
animation.repeatCount = __builtin_huge_valf();
animation.repeatCount = 1.0f/0.0f;
В Swift я использую следующий код:
let animation = CATransition()
animation.repeatCount = Float.infinity