
Yapanimator ist Ihr schnelles und freundliches physikalisches Animationssystem. Yapanimator wurde mit Berücksichtigung von Leichtigkeiten gebaut, wodurch Sie und Ihr Designer sehr, sehr glücklich gehalten wurden. Alle Animationen sind unter Fall zu machen, umfassen Fertigstellungsblöcke und ermöglichen es Ihnen, Kräfte auf sie anzuwenden (zB addieren Sie die Geschwindigkeit von einer Geste in einem Übergang). Wir haben Animatable Protokollkonformance für einige häufig animierte Typen ( CG -Typen) beigefügt, aber es ist wirklich einfach, jedem anderen Typ Konformität hinzuzufügen. Sie können alles animieren , was Sie darstellen und mit einer Reihe von Double -S -Eigenschaften, Musikvolumen, Morphing zwischen Bezier -Pfaden, Farben, Glättungsbürstenstrichen und der Liste fortsetzen können. Verwenden Sie Ihre Fantasie!
Weil es wahnsinnig einfach zu bedienen ist und schöne Animationen herstellt, ist deshalb. Es gibt andere physikbasierte Animationssysteme da draußen (z. B. die Frühlingsanimationen von Facebook), aber sie müssen immer noch zu viel Code, Buchhaltung und Handlager für unseren Geschmack schreiben. Yapanimator repräsentiert eine destillierte N-Th-Iteration von Code, die wir seit Jahren in unseren eigenen Apps verwenden. Wir finden es in unserem Alltag von unschätzbarem Wert und denken, dass Sie es auch tun werden.
Yapanimator ist mit einer praktischen Erweiterung mit CALayer und UIView / NSView angeschraubt und bietet Ein-Liner-Animationen unter den animatedLayer bzw. animated Eigenschaften.

func handle ( gesture : UIPanGestureRecognizer ) {
if gesture . state == . began {
squircle . animated . cornerRadius . animate ( to : squircle . bounds . width / 2.0 )
squircle . animated . rotationZ . animate ( to : . pi )
else if gesture . state == . changed {
squircle . animated . position . instant ( to : gesture . location ( in : nil ) )
} else if gesture . state == . ended {
squircle . animated . position . animate ( to : self . view . center )
squircle . animated . cornerRadius . animate ( to : 0 )
squircle . animated . rotationZ . animate ( to : 0 )
}
} Das Erstellen eines benutzerdefinierten Animators ist unkompliziert:
initialValue Dies legt den Anfangswert des Animators fest und informiert ihn, welchen Typ er animiert.willBegin der kurz vor dem Beginn der Bewegung gerufen wird. Geben Sie den tatsächlichen Wert der Eigenschaft zurück, die Sie animieren werden. Auf diese Weise kann der Animator mit diesem Wert synchronisieren, falls er außerhalb des Umfangs des Animators geändert wurde. (optional)eachFrame jeden Frame der Animation aufgerufen hat - in der Regel würden Sie den current.value Animator auf die Eigenschaft anwenden, die Sie animieren. Sie können es auch verwenden, um Werte zu überprüfen, um andere Aktionen / Animationen auszulösen. frameAnimator = YapAnimator ( initialValue : square . frame , willBegin : { [ unowned self ] in
return self . square . frame
} , eachFrame : { [ unowned self ] ( animator ) in
self . square . frame = animator . current . value
} ) 
frameAnimator . bounciness = 1.5
frameAnimator . animate ( to : square . frame . insetBy ( dx : - 50 , dy : - 50 ) , completion : { animator , wasInterrupted in
if !wasInterrupted {
// animate back to the original value
animator . animate ( to : animator . current . value . insetBy ( dx : 50 , dy : 50 ) )
}
} ) Fühlen Sie sich frei, Ihre Frage in einem Problem zu stellen. Wir werden dort antworten und dieses Lesen ändern/ein Wiki starten, wenn die Antwort den anderen zugute kommt.
Yapanimator ist im Besitz und wird von Yap Studios gepflegt.