2014-06-21 93 views
35

根據文檔,永遠重複CABasicAnimation的方法是將其repeatCount設置爲HUGE_VALF如何在Swift中永遠重複動畫(HUGE_VALF)?

但是在Swift中,HUGE_VALF會導致編譯錯誤。 Swift似乎不瞭解標準庫(或者這個常量所在的位置)。

現在我該怎麼辦?

回答

79

repeatCount設置爲Float.infinity。這編譯和工作。

無論如何,在所有情況下,HUGE_VALF都是傳統值。

儘管如此,這些數字常數名稱並沒有被Swift看到,這有些令人驚訝。我曾嘗試在橋接報頭中導入<stdlib.h>,但它沒有幫助。


但是請馬上看到Martin R的回答。自從我發佈我的答案之後,Apple就明確表達了他們的首選答案:使用.greatestFiniteMagnitude。它幾乎與.infinity一樣,但不完全相同!

+2

不錯的發現。我相信你在這兩個問答中都指'repeatCount'? –

+1

我不是這個意思,因爲我的代碼實際上是在將'repeatDuration'設置爲'HUGE_VALF'。但我可能應該這樣做!我會調整。 – matt

+0

'HUGE_VALF'在''中定義。但即使是這個文件被添加到橋接頭文件,*這個常量不會暴露給Swift。 –

0

我使用「巨大」值。它是一個build_in readonly var;

1

CAMediaTiming狀態的repeatCount屬性的當前文檔:

這個屬性設置爲greatestFiniteMagnitude會導致動畫永遠重複。

這編譯沒有問題:

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

HUGE_VALF不導入到斯威夫特的原因是 它被定義爲在<math.h>一個「不平凡」的宏:

# define HUGE_VALF __builtin_huge_valf()