A Swift library for implementing invisible layout loading views with shimmer animations in iOS apps.
Windless is an iOS library that enables developers to create invisible layout loading views, often called skeleton screens or shimmer effects, to improve user experience during content loading. It provides smooth, animated placeholders that mimic the app's layout structure while data is being fetched, reducing perceived wait times and keeping users engaged.
iOS developers building apps that require content loading states, particularly those using UIKit with Storyboard, Xib, or programmatic layouts and seeking to implement skeleton screens.
Developers choose Windless for its seamless integration with Interface Builder via the `isWindlessable` flag, support for multiline text reconstruction, and extensive customization options for animations, making it a flexible and easy-to-use solution for implementing skeleton screens on iOS.
Windless makes it easy to implement invisible layout loading view.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Allows setting the `isWindlessable` flag directly in Storyboard or Xib, enabling skeleton screen setup without code for static views, as shown in the README examples.
Automatically reconstructs layouts for UILabel and UITextView based on lineHeight and spacing values, ensuring accurate placeholder shapes for text content.
Offers configurable options like direction, speed, timing, colors, and opacity through WindlessConfiguration, providing fine-grained control over the shimmer effect.
Methods like `start()` and `end()` make it easy to control loading states with minimal code, reducing implementation complexity.
Only supports iOS with UIKit, lacking SwiftUI compatibility and cross-platform options, which restricts use in modern or multi-platform projects.
The README directs users to the example for detailed usage, indicating official documentation may be incomplete and require additional exploration.
Relies on pre-configured views in Storyboard or code; dynamic layout changes during loading might not be handled seamlessly without manual updates.