XREasyRefreshControl
-
一种简单易用的下拉刷新方式
-
一款强大且轻量级的下拉刷新和上拉加载控制库,您可以根据需求自定义刷新个性。
-
这些
UIScrollView
类别使向任何UIScrollView
(或其任何子类)添加下拉刷新和无界滚动功能变得非常容易。如UITableView
、UICollectionView
、UIWebView
以及WKWebView
。向UIScrollView
添加类别和方法,使其易于向所有UIScrollView
的子类添加刷新功能,就是这样简单!
通过扩展UIScrollView
,使得向任何包含UIScrollView
(或其任何子类)添加刷新头部和刷新尾部变得非常容易。例如UITableView
、UICollectionView
、UIWebView
以及WKWebView
。
XREasyRefreshControl
如何使用从CocoaPods获取
在您的Podfile中添加pod 'XREasyRefreshControl'
。
- pod install
- import XREasyRefresh
1.2.1版本及以上支持Swift 4.2和Xcode 10。(1.2.1版本以上支持Swift 4.2和Xcode 10。)
手动导入
下载XREasyRefreshControl
,将Source
目录中的文件添加到您的项目文件中。
支持(系统,语言支持)
- ARC
- Swift 4.2
- iOS 8.0
- Xcode 10或更高版本
- 修复了iPhoneX、XS、XS Max、XR iPhone,iPad上的显示问题。
使用方法
可选(全局配置)(刷新库全局配置)
在 didFinishLaunchingWithOptions
函数中添加代码。
XRRefreshControlSettings.sharedSetting.configSettings(
animateTimeForAdjustContentInSetTop: 0.5,
animateTimeForEndRefreshContentInSetTop: 0.3,
afterDelayTimeForEndInsetTopRefreshing: 0.5,
pullLoadingMoreMode: .ignorePullReleaseFast,
refreshStatusLblTextColor: XRRefreshControlSettings.colorFromRGB(hexRGB: 0x333333),
refreshStatusLblTextFont: UIFont.systemFont(ofSize: 13))
向UITableView添加header刷新和footer刷新
// add header Refresh
mainTableView.xr.addPullToRefreshHeader(refreshHeader: XRActivityRefreshHeader(), heightForHeader: 65, ignoreTopHeight: XRRefreshMarcos.xr_StatusBarHeight) {
// do request...
}
// add footer Refresh
mainTableView.xr.addPullToRefreshFooter(refreshFooter: XRActivityRefreshFooter(), refreshingClosure: {
// do request...
})
向UICollectionView添加header刷新和footer刷新
// add header Refresh
mainCollectionVw.xr.addPullToRefreshHeader(refreshHeader: XRActivityRefreshHeader()) {
// do request...
}
// add footer Refresh
mainCollectionVw.xr.addPullToRefreshFooter(refreshFooter: XRActivityRefreshFooter(), refreshingClosure: {
// do request...
})
向UIWebView添加header刷新扩展
// add header Refresh
webView.xr.addPullToRefreshHeader(refreshHeader: XRActivityRefreshHeader()) { [weak self] in
if let weakSelf = self {
weakSelf.webView.reload()
}
}
向WKWebView添加header刷新扩展
// add header Refresh
wk_webView.xr.addPullToRefreshHeader(refreshHeader: XRActivityRefreshHeader()) { [weak self] in
if let weakSelf = self {
weakSelf.wk_webView.reload()
}
}
自动下拉刷新(自动进行header下拉刷新)
mainTableView.xr.beginHeaderRefreshing()
结束下拉刷新(结束header刷新)
mainTableView.xr.endHeaderRefreshing()
为UITableView、UICollectionView、UIWebView、WKWebView、UIScrollView添加下拉加载刷新footer
mainTableView.xr.addPullToLoadingMoreWithRefreshFooter(refreshFooter: XRActivityRefreshFooter(), heightForFooter: 55) {
// do loading more request
}
结束下拉加载更多(结束footer刷新)
mainTableView.xr.endFooterRefreshing()
结束下拉加载更多,显示无更多数据提示(结束footer刷新,显示无更多数据提示)
mainTableView.xr.endFooterRefreshingWithNoMoreData()
结束下拉加载更多,并移除刷新控件(结束footer刷新,并移除刷新footer)
mainTableView.xr.endFooterRefreshingWithRemoveLoadingMoreView()
结束上拉加载,加载失败时点击文字重新加载(结束footer的刷新,显示加载失败,点击文字即可重新加载)
mainTableView.xr.endFooterRefreshingWithLoadingFailure()
如何适配iPhoneX、iPhone XS、XR和XS Max?(如何适配iPhone X...)
非常简单,你可以指定 XRRefreshHeader
的ignoreTopHeight
的值,以及XRRefreshFooter
的ignoreBottomHeight
的值,而ignoreBottomHeight
默认已经适配好了,无需设置,当然,你也可以指定你想要的值。适配将变得非常简单。
非常简单,你可以指定 XRRefreshHeader
的ignoreTopHeight
,以及 XRRefreshFooter
的ignoreBottomHeight
的值,而ignoreBottomHeight
默认已经适配好了,无须设置,当然,你也可以指定你想要的值。适配将变得非常简单。
渲染效果(效果图)
自定义(如何自定制刷新样式?)
你可以继承基类 XRBaseRefreshHeader
和 XRBaseRefreshFooter
,重写 refreshStateChanged
,在必要时重写 progressvaluechanged
,以自定义你想要的下拉刷新和上拉加载效果。
你可以通过继承 XRBaseRefreshHeader
和 XRBaseRefreshFooter
这两个类,用很少的代码自定义出你想要的下拉刷新和上拉加载样式,还可以通过 progressvaluechanged
的值更精确地控制动画。
内部原理(实现原理)
XREasyRefreshControl 通过添加新的公共方法和动态属性扩展了 UIScrollView
。
它使用键值观察来追踪 scrollView 的 contentOffset
和 contentSize
。
许可证
软件按“原样”提供,不提供任何形式的保证,无论是明示的、暗示的,还是关于适用性、特定目的和版权的,包括但不限于商销性、适用于特定目的和非侵权性的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论是否因合同、侵权或其他行为引起,不论是否与软件本身或软件的使用或其他操作有关。