{"repo":"jtrivedi/Wave","free":true,"listed":false,"github":"https://github.com/jtrivedi/Wave","clone":"git clone https://github.com/jtrivedi/Wave.git","description":"Wave is a spring-based animation engine for iOS and macOS that makes it easy to create fluid, interruptible animations that feel great.","language":"Swift","stars":2382,"topics":["animation","gestures","ios","motion","swift","interaction-design","uikit","ui","appkit","swiftui"],"license":"MIT","category":"mobile-apps","readme_excerpt":"Wave Wave is a spring-based animation engine for iOS, iPadOS, and macOS. It makes it easy to create fluid, interactive, and interruptible animations that feel great. Wave has no external dependencies, and can be easily dropped into existing UIKit, SwiftUI, or AppKit based projects and apps. The core feature of Wave is that all animations are re-targetable , meaning that you can change an animation’s destination value in-flight, and the animation will gracefully redirect to that new value. - Understanding Retargeting - Installation - Documentation - Getting Started - Block-Based Animation - Property-Based Animation - Example Code Understanding Retargeting Consider these demos of the iOS Picture-in-Picture feature. The screen on the left is created with standard UIKit animations, and the one on the right is created with Wave. Though both are “interruptible”, the Wave-based implementation handles the interruption much better, and fluidly arcs to its new destination. The UIKit animation feels stiff and jerky in comparison. At its core, retargeting is the process of preserving an animation’s velocity even as its target changes, which Wave does automatically. Installation Add Wave to your app's Package.swift file, or selecting File - Add Packages in Xcode: If you clone the repo, you can run the sample app, which contains a few interactive demos to understand what Wave provides. Note: To enable high frame-rate animations on ProMotion devices (i.e. 120 fps animation), you'll need to ","default_branch":null,"files":null,"tree":[],"storefront":"/r/jtrivedi","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/jtrivedi/Wave/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}