CRRefresh 以简单的方式实现下拉刷新,如果您想自定义其 UI 样式,只需遵循特定的协议即可。我们不会定期更新一些漂亮的多媒体效果,同时欢迎您给我写信~
截图
![]() |
![]() |
![]() |
---|---|---|
NormalAnimator |
SlackLoadingAnimator |
RamotionAnimator |
![]() |
||
FastAnimator |
要求
- Xcode 8 或更高版本
- iOS 8.0 或更高版本
- ARC
- Swift 3.0 或更高版本
特性
- 支持
UIScrollView
及其子类UICollectionView
UITableView
UITextView
- 下拉刷新,上拉加载更多
- 支持自定义样式
安装
CocoaPods
CocoaPods 是添加 CRRefresh 到您项目的推荐方式。
在您的 Podfile 中添加对 CRRefresh 的 pod 条目。
pod 'CRRefresh'
其次,将 CRRefresh 安装到您的项目中
pod install
Carthage
Carthage 是一个去中心化的依赖管理器,它构建您的依赖并提供二进制框架。要使用 Carthage 将 CRRefresh
集成到您的 Xcode 项目中,请在您的 Cartfile
中指定它
github "CRAnimation/CRRefresh"
运行 carthage update
以构建框架,并将构建的 CRRefresh.framework
(在 Carthage/Build/iOS 文件夹中)拖到您的 Xcode 项目中(在 Targets
中的链接框架和库)。
手动
- 下载最新代码版本 .
- 在 Xcode 中打开您的项目,将
CRRefresh
文件夹拖到您的项目中。如果将代码存档提取到项目之外,确保选择复制项目。 - 您需要用
import CRRefresh
。
使用方法
将CRRefresh
添加到您的项目中
import CRRefresh
添加下拉刷新
/// animator: your customize animator, default is NormalHeaderAnimator
tableView.cr.addHeadRefresh(animator: NormalHeaderAnimator()) { [weak self] in
/// start refresh
/// Do anything you want...
DispatchQueue.main.asyncAfter(deadline: .now() + 2, execute: {
/// Stop refresh when your job finished, it will reset refresh footer if completion is true
self?.tableView.cr.endHeaderRefresh()
})
}
/// manual refresh
tableView.cr.beginHeaderRefresh()
添加无限滚动
/// animator: your customize animator, default is NormalFootAnimator
tableView.cr.addFootRefresh(animator: NormalFootAnimator()) { [weak self] in
/// start refresh
/// Do anything you want...
DispatchQueue.main.asyncAfter(deadline: .now() + 2, execute: {
/// If common end
self?.tableView.cr.endLoadingMore()
/// If no more data
self?.tableView.cr.noticeNoMoreData()
/// Reset no more data
self?.tableView.cr.resetNoMore()
})
}
自定义样式
自定义刷新需符合CRRefreshProtocol协议。
public protocol CRRefreshProtocol {
/// Customize view
var view: UIView {get}
/// View insets
var insets: UIEdgeInsets {set get}
/// The height of the trigger to refresh
var trigger: CGFloat {set get}
/// The height of the animation is executed
var execute: CGFloat {set get}
/// Start refresh
mutating func refreshBegin(view: CRRefreshComponent)
/// End refresh
mutating func refreshEnd(view: CRRefreshComponent, finish: Bool)
/// Refresh the progress changes
mutating func refresh(view: CRRefreshComponent, progressDidChange progress: CGFloat)
/// Refresh the state changes
mutating func refresh(view: CRRefreshComponent, stateDidChange state: CRRefreshState)
}
移除
tableView.cr.removeFooter()
tableView.cr.removeHeader()
贡献
欢迎通过克隆仓库、修改代码和提交issue或pull request等方式为项目做出贡献。
联系方式
如果您想要联系我
- 邮箱:[email protected]
- Github: https://github.com/imwcl
- QQ: 631106979
- 动态效果研究所群:547897182
许可证
CRRefresh遵循MIT许可证发布。详细信息请参阅LICENSE文件。