Während Josh Homanns Antwort sehr hilfreich ist, ist es auch erwähnenswert, dass es in diesem Fall keine bestimmte Enum gibt, die funktionieren könnte. CASpringAnimation
kann auf jede beliebige Eigenschaft angewendet werden, nicht nur auf eingebaute. Selbst "eingebaut" ist irreführend, da es viele eingebaute CALayer-Unterklassen gibt, die selbst unterschiedliche Eigenschaften haben. Animationen müssen nicht einmal auf eine Ebene angewendet werden (SceneKit verwendet sie auch). Wenn Sie einer Ebene eine benutzerdefinierte Eigenschaft hinzugefügt haben und diese mit einer Federanimation animieren möchten, wäre es unmöglich, dass es sich um eine Enumeration handelt.
Das heißt, Sie können besser als hier eine Zeichenfolge übergeben (oder auch eine Zeichenfolge konstant). Sie können #keyPath
verwenden:
let flash = CASpringAnimation(keyPath: #keyPath(CALayer.borderColor))
Dies stellt Compiler-Überprüfung, dass diese Methode tatsächlich definiert ist. Dies erreicht viel von dem Ziel, das Sie mit einem Enum suchen, und gleichzeitig flexibel genug, um jedes Ziel und jede Eigenschaft zu handhaben.
in Zukunft hoffentlich, Core Animation wird den neuen Swift 4 „KeyPath“ -Typen akzeptieren, und Sie werden in der Lage sein, dies zu tun:
let flash = CASpringAnimation(keyPath: \CALayer.borderColor)
Große knappe Antwort, die es deutlich erklärt. Danke –
Große Antwort. Können Sie einige gute Ressourcen für Core Animation vorschlagen? – TheoK