XREasyRefreshControl 1.2.1

XREasyRefreshControl 1.2.1

hanzhuzi 维护。



  • 作者:
  • hanzhuzi

XREasyRefreshControl

  • 一种简单易用的下拉刷新方式

  • 一款强大且轻量级的下拉刷新和上拉加载控制库,您可以根据需求自定义刷新个性。

  • 这些UIScrollView类别使向任何UIScrollView(或其任何子类)添加下拉刷新和无界滚动功能变得非常容易。如UITableViewUICollectionViewUIWebView以及WKWebView。向UIScrollView添加类别和方法,使其易于向所有UIScrollView的子类添加刷新功能,就是这样简单!

通过扩展UIScrollView,使得向任何包含UIScrollView(或其任何子类)添加刷新头部和刷新尾部变得非常容易。例如UITableViewUICollectionViewUIWebView以及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...)

非常简单,你可以指定 XRRefreshHeaderignoreTopHeight的值,以及XRRefreshFooterignoreBottomHeight的值,而ignoreBottomHeight默认已经适配好了,无需设置,当然,你也可以指定你想要的值。适配将变得非常简单。

非常简单,你可以指定 XRRefreshHeaderignoreTopHeight,以及 XRRefreshFooterignoreBottomHeight的值,而ignoreBottomHeight默认已经适配好了,无须设置,当然,你也可以指定你想要的值。适配将变得非常简单。

渲染效果(效果图)

UITableView,UICollectionView

UIWebView,WKWebView

UIWebView,WKWebView

自定义(如何自定制刷新样式?)

你可以继承基类 XRBaseRefreshHeaderXRBaseRefreshFooter,重写 refreshStateChanged,在必要时重写 progressvaluechanged,以自定义你想要的下拉刷新和上拉加载效果。

你可以通过继承 XRBaseRefreshHeaderXRBaseRefreshFooter这两个类,用很少的代码自定义出你想要的下拉刷新和上拉加载样式,还可以通过 progressvaluechanged的值更精确地控制动画。

内部原理(实现原理)

XREasyRefreshControl 通过添加新的公共方法和动态属性扩展了 UIScrollView

它使用键值观察来追踪 scrollView 的 contentOffsetcontentSize

许可证

软件按“原样”提供,不提供任何形式的保证,无论是明示的、暗示的,还是关于适用性、特定目的和版权的,包括但不限于商销性、适用于特定目的和非侵权性的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论是否因合同、侵权或其他行为引起,不论是否与软件本身或软件的使用或其他操作有关。