A lightweight pull-to-refresh library for iOS scrollable views with extensive customization options.
MJRefresh is an iOS library that implements pull-to-refresh functionality for scrollable views like UITableView and UICollectionView. It provides customizable header and footer components to trigger data reloading with a simple drag gesture, eliminating the need for manual refresh buttons.
iOS developers building apps with scrollable content who need to implement smooth, native-feeling refresh mechanisms without reinventing the wheel.
Developers choose MJRefresh for its extensive customization options, support for multiple view types, and ease of integration—offering both out-of-the-box solutions and the flexibility to build custom refresh controls.
An easy way to use pull-to-refresh.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Works seamlessly with UIScrollView, UITableView, UICollectionView, and WKWebView, as highlighted in the 'Support what kinds of controls to refresh' section, making it a one-stop solution for iOS scrollables.
Offers built-in normal and GIF headers/footers, plus full DIY customization through inheritance, demonstrated in examples like 'DIY the control of refresh' with detailed class structure charts.
Supports dynamic language switching with automatic rerendering via MJRefreshConfig, including i18n examples and notification handling for DIY components.
Includes Swift chaining grammar for concise code, as shown in the 'Swift Chaining Grammar Supported' section, improving readability for Swift developers.
Provides horizontal pull-to-refresh for UICollectionView layouts, a niche feature not commonly found in other refresh libraries, detailed in the trailer refresh examples.
No support for SwiftUI, restricting its use in modern iOS apps that are adopting SwiftUI exclusively, and the README shows no plans for SwiftUI integration.
The README mentions seeking maintainers due to the author's busy schedule, indicating potential stability or update issues, which could affect long-term project reliance.
Relies on broken image links from external blogs and has some outdated references, making it harder for new users to follow examples without troubleshooting.
While flexible, creating DIY controls requires understanding the inheritance-based class structure, which can be overwhelming compared to simpler, configuration-based alternatives.