A Swift-optimized animation library for gesture-driven interfaces, offering spring, curve, and decay animations with a protocol-oriented design.
Yet Another Animation Library is a Swift-native animation engine optimized for gesture-driven user interfaces. It provides spring, curve, and decay animations with a focus on performance, type safety, and seamless integration with UIKit. It solves the need for a fast, Swift-friendly alternative to libraries like Facebook Pop, especially for interactive animations tied to user gestures.
iOS developers building gesture-rich, interactive applications who need performant, type-safe animations integrated with UIKit or custom views.
Developers choose YAAL for its Swift-optimized design, protocol-oriented architecture, and SIMD-powered performance. Its unique chaining operator and gesture velocity interpolation make it exceptionally well-suited for creating complex, reactive animations with minimal code.
Designed for gesture-driven animations. Fast, simple, & extensible!
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses SIMD types and instructions for calculations, coupled with Swift generics for better compiler optimization, ensuring high-speed animations as highlighted in the README.
Seamlessly interpolates velocity from user gestures into animations, enabling natural motion effects like the 3D rotate demo shown with pan gestures.
Features a concise `=>` operator for linking animations and reactions, simplifying code for complex interactive workflows, such as mapping velocity to alpha changes.
Supports custom animatable types via VectorConvertible and custom properties, with type safety in most APIs, allowing animations beyond UIKit's native limits.
The `yaal.animationFor(key:)` method lacks compile-time type safety, admitting in the README that incorrect types can be passed and will crash at runtime.
Creating custom animations requires subclassing and overriding methods like `update(dt:TimeInterval)`, which is more involved than using higher-level, declarative APIs.
As a niche library, it has fewer community resources and examples compared to mainstream options, and the README targets Swift 3.1, raising concerns about compatibility with newer Swift versions.
YetAnotherAnimationLibrary is an open-source alternative to the following products: