根据文档,永远重复CABasicAnimation的方法是将其repeatCount
设置为HUGE_VALF
。
但在Swift中,HUGE_VALF
会导致编译错误。 Swift似乎不知道标准库(或者这个常量所在的位置)。
现在我该怎么做?
将repeatCount
设置为Float.infinity
。这编译和工作。
在任何情况下,HUGE_VALF
都是遗留价值。
尽管如此,Swift还是看不到这些数字常量名称,这有点令人惊讶。我确实尝试在桥接头中导入<stdlib.h>
,但它没有帮助。
但请现在看看Martin R的回答。自从我发布答案以来,Apple明确表达了他们的首选答案:使用.greatestFiniteMagnitude
。它几乎与.infinity
相同但不完全!
repeatCount
的CAMediaTiming
属性的当前文档指出:
将此属性设置为
greatestFiniteMagnitude
将导致动画永远重复。
并且编译没有问题:
let ba = CABasicAnimation()
ba.repeatCount = .greatestFiniteMagnitude
HUGE_VALF
没有导入Swift的原因是它被定义为<math.h>
中的“非平凡”宏:
# define HUGE_VALF __builtin_huge_valf()
我使用“巨大”值。它是一个build_in readonly var;