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

问题描述 投票:38回答:3

根据文档,永远重复CABasicAnimation的方法是将其repeatCount设置为HUGE_VALF

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

现在我该怎么做?

swift cabasicanimation
3个回答
82
投票

repeatCount设置为Float.infinity。这编译和工作。

在任何情况下,HUGE_VALF都是遗留价值。

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


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


1
投票

repeatCountCAMediaTiming属性的当前文档指出:

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

并且编译没有问题:

let ba = CABasicAnimation()
ba.repeatCount = .greatestFiniteMagnitude

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

#   define    HUGE_VALF    __builtin_huge_valf()

0
投票

我使用“巨大”值。它是一个build_in readonly var;

© www.soinside.com 2019 - 2024. All rights reserved.