
Yapanimator est votre système d'animation basé sur la physique rapide et amical. Yapanimator a été construit avec une facilité d'utilisation, vous gardant sain d'esprit et votre designer très, très heureux. Toutes les animations sont interrupables, incluent des blocs d'achèvement et vous permettent de leur appliquer des forces (par exemple, ajoutant la vitesse d'un geste dans une transition). Nous avons inclus la conformité du protocole Animatable pour certains types couramment animés (types CG ), mais il est vraiment facile d'ajouter une conformité à tout autre type. Vous pouvez animer tout ce que vous pouvez représenter et composer avec un tableau de Double S - Voir les propriétés, le volume de la musique, se transformer entre les chemins de Bezier, les couleurs, les traits de pinceau lissage, la liste continue… Utilisez votre imagination!
Parce qu'il est incroyablement facile à utiliser et fait de belles animations, c'est pourquoi. Il existe d'autres systèmes d'animation basés sur la physique (par exemple, les animations de printemps d'Uikit, la pop de Facebook), mais elles nécessitent toujours d'écrire trop de code, de comptabilité et de tenue à notre goût. Yapanimator représente une itération n-distillée du code que nous utilisons dans nos propres applications depuis des années. Nous trouvons cela inestimable dans notre quotidien et pensons que vous aussi.
Yapanimator est livré avec une extension pratique boulonnée sur CALayer et UIView / NSView , fournissant des animations en une ligne sous lelayer animatedLayer et les propriétés animated , respectivement.

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 )
}
} La création d'un animateur personnalisé est simple:
initialValue Cela définit la valeur initiale de l'animateur et l'informe quel type il sera animé.willBegin a appelé juste avant le début du mouvement. Renvoyez la valeur réelle de la propriété que vous animerez. Cela permet à l'animateur de se synchroniser avec cette valeur au cas où il aurait été modifié en dehors de la portée de l'animateur. (facultatif)eachFrame appelé chaque trame de l'animation - c'est généralement là que vous appliqueriez la current.value de l'animateur à la propriété que vous animez. Vous pouvez également l'utiliser pour vérifier les valeurs pour déclencher d'autres actions / animations. 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 ) )
}
} ) N'hésitez pas à poser votre question dans un numéro. Nous y répondrons et modifierons ceci me lire / démarrer un wiki si la réponse semble bénéficier aux autres.
Yapanimator est détenu et entretenu par YAP Studios.