如何在Swift(HUGE_VALF)中永远重复动画?

mat*_*att 38 cabasicanimation swift

根据文档,永远重复CABasicAnimation的方法是将其设置repeatCountHUGE_VALF.

但在Swift中,HUGE_VALF会导致编译错误.Swift似乎不知道标准库(或者这个常量所在的位置).

现在我该怎么做?

mat*_*att 82

设置repeatCountFloat.infinity.这编译和工作.

很可能,HUGE_VALF在任何情况下都是遗留价值.

尽管如此,Swift还是看不到这些数字常量名称,这有点令人惊讶.我确实尝试<stdlib.h>在桥接头中导入,但它没有帮助.


但请现在看看Martin R的回答.自我发布答案以来,Apple明确表达了他们的首选答案:使用.greatestFiniteMagnitude.它几乎是一样的.infinity但不完全!

  • 很好找.我相信你在Q&A中的意思是'repeatCount`吗? (2认同)

Mar*_*n R 7

状态repeatCount属性的当前文档CAMediaTiming

将此属性设置为greatestFiniteMagnitude将导致动画永远重复。

并且编译没有问题:

let ba = CABasicAnimation()
ba.repeatCount = .greatestFiniteMagnitude
Run Code Online (Sandbox Code Playgroud)

HUGE_VALF没有导入 Swift的原因是它被定义为一个“非平凡”的宏<math.h>

#   define    HUGE_VALF    __builtin_huge_valf()
Run Code Online (Sandbox Code Playgroud)