前言
Swift
下拉刷新、上拉加载组件,简单易用,适用于 UIScrollView、UITableView、UICollectionView
等继承自 UIScrollView
的组件
集成
使用 Cocoapods 引入
使用
这里以 UITableView 为例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| // 添加下拉刷新组件 self.tableV.setRefreshHeader(MZRefreshNormalHeader(beginRefresh: { // 请求数据,请求到数据后记得停止刷新动画 self.loadData() })) // 添加上拉加载组件 self.tableV.setRefreshFooter(MZRefreshNormalFooter(beginRefresh: { // 请求数据,请求到数据后记得停止刷新动画 self.loadMore() }))
// 加载数据 func loadData() { print("下拉刷新") } func loadMore() { print("上拉加载") }
|
1 2 3 4
| // 手动触发下拉刷新 self.tableV.startHeaderRefreshing(animated: true) // 手动触发上拉加载 self.tableV.startFooterRefreshing(animated: true)
|
1 2 3 4
| // 停止下拉刷新动画 self.tableV.stopHeaderRefreshing() // 停止上拉加载动画 self.tableV.stopFooterRefreshing()
|
配置管理
- 通过
MZRefreshConfig
类管理部分组件属性
1 2 3 4 5 6 7 8 9
| // 管理部分组件属性 // 刷新状态文字颜色 MZRefreshConfig.shareInstance.setRefreshStatusColor(.blue) // 刷新状态文字大小 MZRefreshConfig.shareInstance.setRefreshStatusFont(.systemFont(ofSize: 18)) // 刷新时间文字颜色 MZRefreshConfig.shareInstance.setRefreshTimeColor(.green) // 刷新时间文字大小 MZRefreshConfig.shareInstance.setRefreshTimeFont(.systemFont(ofSize: 12))
|
1 2 3 4 5 6 7 8 9
| /* type 刷新动画类型 color 刷新动画颜色 showTime 是否显示上次刷新时间 beginRefresh 刷新回调 */ MZRefreshNormalHeader(type: .lineSpinFadeLoader, color: .brown, showTime: true) { }
|
1 2 3 4 5 6 7 8
| /* type 刷新动画类型 color 刷新动画颜色 beginRefresh 刷新回调 */ MZRefreshNormalFooter(type: .lineScalePulseOut, color: .brown, beginRefresh: { }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| /* 下拉刷新组件 images gif分解图片数组 size gif图片显示大小 animationDuration 是否显示上次下拉刷新时间 showTime gif动画时间 beginRefresh 刷新回调 */ MZRefreshGifHeader(images: animationImages, size: 60, animationDuration: 1.0, showTime: true, beginRefresh: { })
/* images gif图片Data size gif图片显示大小 animationDuration 是否显示上次下拉刷新时间 showTime gif动画时间 beginRefresh 刷新回调 */ MZRefreshGifHeader(gifImage: data, size: 40, animationDuration: 1.0, showTime: true, beginRefresh: { })
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| /* 上拉加载组件 images gif分解图片数组 size gif图片显示大小 animationDuration 是否显示上次下拉刷新时间 beginRefresh 刷新回调 */ MZRefreshGifFooter(images: animationImages, size: 60, animationDuration: 1.0, beginRefresh: { })
/* 上拉加载组件 gifImage gif图片Data size gif图片显示大小 animationDuration 是否显示上次下拉刷新时间 beginRefresh 刷新回调 */ MZRefreshGifFooter(gifImage: data, size: 40, animationDuration: 0.0, beginRefresh: { })
|
1 2
| let path = Bundle.main.path(forResource: "1", ofType: "gif")! let data = try! Data(contentsOf: URL(fileURLWithPath: path))
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| /* 下拉刷新组件 images gif分解图片数组 size gif图片显示大小 refreshOffSet 开始刷新所需的偏移量 animationDuration gif动画时间 readyImage 释放刷新图片 beginRefresh 刷新回调 */ MZRefreshOnlyGifHeader(images: animationImages, size: 80, refreshOffSet: 80, animationDuration: 1.0, readyImage: nil, beginRefresh: {
})
/* 下拉刷新组件 gifImage gif图片Data size gif图片显示大小 refreshOffSet 开始刷新所需的偏移量 animationDuration gif动画时间 readyImage 释放刷新图片 beginRefresh 刷新回调 */ MZRefreshOnlyGifHeader(gifImage: data, size: 80, refreshOffSet: 80, animationDuration: 1.0, readyImage: nil, beginRefresh: {
})
|
stopRefreshingWithNoMoreData
1 2 3 4 5 6 7
| let footer = UILabel(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 40)) footer.font = .systemFont(ofSize: 14) footer.textAlignment = .center footer.textColor = .black footer.text = "—— 生活的强者,往往都能坚持到底 ——" footer.textColor = .brown self.tableV.setRefreshNoMoreDataView(footer)
|
1 2 3 4 5
| // 停止下拉刷新动画,并显示没有更多数据 self.tableV.stopHeaderRefreshingWithNoMoreData()
// 停止上拉加载动画,并显示没有更多数据 self.tableV.stopFooterRefreshingWithNoMoreData()
|
自定义
1
| 通过 MZRefreshHeaderComponent 协议实现下拉刷新组件自定义,可参考MZRefreshNormalHeader、MZRefreshOnlyGifHeader等组件实现
|
1
| 通过 MZRefreshFooterComponent 协议实现下拉刷新组件自定义,可参考MZRefreshNormalFooter、MZRefreshGifFooter等组件实现
|