2014-06-21 5 views
35

Nach den Dokumenten, die Art und Weise eine CABasicAnimation für immer zu wiederholen, ist seine repeatCount zu HUGE_VALF einzustellen.Wie wiederhole ich die Animation für immer in Swift (HUGE_VALF)?

Aber in Swift, HUGE_VALF verursacht einen Compiler-Fehler. Swift scheint über die Standardbibliothek (oder wo auch immer diese Konstante liegt) nicht zu wissen.

Was mache ich jetzt?

Antwort

79

Set der repeatCount zu Float.infinity. Dies kompiliert und funktioniert.

Aller Wahrscheinlichkeit HUGE_VALF war in jedem Fall ein Vermächtnis Wert.

Dennoch ist es ein bisschen überrascht, dass diese numerischen Konstante Namen nicht von Swift gesehen. Ich habe versucht, <stdlib.h> in den Bridging-Header zu importieren, aber es hat nicht geholfen.


Aber bitte sehen Sie jetzt Martin R's Antwort. Seit der Zeit, in der ich meine Antwort gepostet habe, hat Apple ihre bevorzugte Antwort explizit angegeben: Verwenden Sie .greatestFiniteMagnitude. Es ist fast dasselbe wie .infinity aber nicht ganz!

+2

Gut finden. Ich glaube, du meintest "repeatCount" in beiden Fragen und Antworten? –

+1

Ich meinte das nicht in dem Sinne, dass mein Code "repeatDuration" auf "HUGE_VALF" gesetzt hat. Aber das hätte ich wohl gemeint! Ich werde mich anpassen. – matt

+0

'HUGE_VALF' ist definiert in' '. Aber selbst wenn diese Datei zur Bridging-Header-Datei hinzugefügt wird, ist * diese * Konstante Swift nicht zugänglich. –

0

Ich benutze den „riesig“ Wert. es ist ein build_in readonly var;

1

Die aktuelle Dokumentation für die repeatCount Eigenschaft CAMediaTiming Staaten:

diese Eigenschaft auf greatestFiniteMagnitude Einstellung wird die Animation führen immer zu wiederholen.

Und das kompiliert ohne Probleme:

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

Der Grund, dass HUGE_VALF nicht in Swift importiert wird, ist, dass es als "nicht-triviale" Makro in <math.h> definiert:

# define HUGE_VALF __builtin_huge_valf() 
Verwandte Themen