Elastic pull to refresh for iOS developed in Swift
DGElasticPullToRefresh
Elastic pull to refresh compontent developed in Swift
Inspired by this Dribbble post: Pull Down to Refresh by Hoang Nguyen
Tutorial on how this bounce effect was achieved can be found here.
Requirements
- Xcode 7 or higher
- iOS 8.0 or higher (may work on previous versions, just did not test it)
- ARC
- Swift 3.0
Demo
Open and run the DGElasticPullToRefreshExample project in Xcode to see DGElasticPullToRefresh in action.
Installation
CocoaPods
pod 'DGElasticPullToRefresh'
Manual
Add DGElasticPullToRefresh folder into your project.
Example usage
// Initialize tableView
let loadingView = DGElasticPullToRefreshLoadingViewCircle()
loadingView.tintColor = UIColor(red: 78/255.0, green: 221/255.0, blue: 200/255.0, alpha: 1.0)
tableView.dg_addPullToRefreshWithActionHandler({ [weak self] () -> Void in
// Add your logic here
// Do not forget to call dg_stopLoading() at the end
self?.tableView.dg_stopLoading()
}, loadingView: loadingView)
tableView.dg_setPullToRefreshFillColor(UIColor(red: 57/255.0, green: 67/255.0, blue: 89/255.0, alpha: 1.0))
tableView.dg_setPullToRefreshBackgroundColor(tableView.backgroundColor!)
Do not forget to remove pull to refresh on view controller deinit. It is a temporary solution.
deinit {
tableView.dg_removePullToRefresh()
}
Description
Add pull to refresh without loading view:
func dg_addPullToRefreshWithActionHandler(_ actionHandler: @escaping () -> Void)
Add pull to refresh with loading view:
func dg_addPullToRefreshWithActionHandler(_ actionHandler: @escaping () -> Void, loadingView: DGElasticPullToRefreshLoadingView?)
You can use built-in DGElasticPullToRefreshLoadingViewCircle or create your own by subclassing DGElasticPullToRefreshLoadingView and implementing these methods:
func setPullProgress(_ progress: CGFloat)
func startAnimating()
func stopLoading()
Remove pull to refresh:
func dg_removePullToRefresh()
Set auto start loading:
func dg_startLoading()
Change pull to refresh background color:
func dg_setPullToRefreshBackgroundColor(_ color: UIColor)
Change pull to refresh fill color:
func dg_setPullToRefreshFillColor(_ color: UIColor)
Contribution
Please feel free to submit pull requests. Cannot wait to see your custom loading views for this pull to refresh.