根據文檔,永遠重複CABasicAnimation的方法是將其repeatCount
設置爲HUGE_VALF
。如何在Swift中永遠重複動畫(HUGE_VALF)?
但是在Swift中,HUGE_VALF
會導致編譯錯誤。 Swift似乎不瞭解標準庫(或者這個常量所在的位置)。
現在我該怎麼辦?
根據文檔,永遠重複CABasicAnimation的方法是將其repeatCount
設置爲HUGE_VALF
。如何在Swift中永遠重複動畫(HUGE_VALF)?
但是在Swift中,HUGE_VALF
會導致編譯錯誤。 Swift似乎不瞭解標準庫(或者這個常量所在的位置)。
現在我該怎麼辦?
將repeatCount
設置爲Float.infinity
。這編譯和工作。
無論如何,在所有情況下,HUGE_VALF
都是傳統值。
儘管如此,這些數字常數名稱並沒有被Swift看到,這有些令人驚訝。我曾嘗試在橋接報頭中導入<stdlib.h>
,但它沒有幫助。
但是請馬上看到Martin R的回答。自從我發佈我的答案之後,Apple就明確表達了他們的首選答案:使用.greatestFiniteMagnitude
。它幾乎與.infinity
一樣,但不完全相同!
我使用「巨大」值。它是一個build_in readonly var;
爲CAMediaTiming
狀態的repeatCount
屬性的當前文檔:
這個屬性設置爲
greatestFiniteMagnitude
會導致動畫永遠重複。
這編譯沒有問題:
let ba = CABasicAnimation()
ba.repeatCount = .greatestFiniteMagnitude
是HUGE_VALF
不導入到斯威夫特的原因是 它被定義爲在<math.h>
一個「不平凡」的宏:
# define HUGE_VALF __builtin_huge_valf()
不錯的發現。我相信你在這兩個問答中都指'repeatCount'? –
我不是這個意思,因爲我的代碼實際上是在將'repeatDuration'設置爲'HUGE_VALF'。但我可能應該這樣做!我會調整。 – matt
'HUGE_VALF'在''中定義。但即使是這個文件被添加到橋接頭文件,*這個常量不會暴露給Swift。 –