示例
刷新
设置下拉刷新
scrollView.refresh.setup(view: CustomRefreshView) {
/// do something...
self.scrollView.refresh.endRefreshing()
}
立即触发刷新状态
scrollView.refresh.beginRefreshing()
结束刷新状态
scrollView.refresh.endRefreshing()
自定义刷新视图
extension SomeView: CustomRefresh {
/// @optional, default is 44.
/// Sets the height displayed when refreshing.
var refreshingKeepHeight: CGFloat { return 44 }
/// @optional, default is .init(top: 30, left: 0, bottom: 0, right: 0).
/// -top: increase the trigger refresh distance.
/// -left and right: set the horizontal offset.
/// -bottom: increase the distance from scrollview.
var refreshInsets: UIEdgeInsets { return .zero }
/**
In this method, set the UI in different states.
There are three status types: initial, pulling, refreshing.
- parameter previous: previous refresh state
- parameter newState: new refresh state
*/
func refreshStateChanged(previous: RefreshState, newState: RefreshState) {
/// do something...
}
}
let someView = SomeView(frame: ...)
scrollView.refresh.setup(view: someView) {
/// do something...
self.scrollView.refresh.endRefreshing()
}
加载更多
设置上拉加载
scrollView.loadMore.setup(view: CustomLoadMoreView) {
/// do something...
self.scrollView.loadMore.endRefreshing(noMore: Bool)
}
立即触发刷新状态
scrollView.loadMore.beginRefreshing()
结束刷新状态并设置是否不再尝试加载数据
scrollView.loadMore.endRefreshing(noMore: Bool)
重置以继续加载数据
scrollView.loadMore.reset()
不再尝试加载数据
scrollView.loadMore.noMore()
自定义 LoadMore 视图
extension SomeView: CustomLoadMore {
/// @optional, default is 0.
/// Set the preload configuration, such as half screen 0.5, one screen is 1, two screens are 2, no preload is 0.
var preload: CGFloat { get }
/// @optional, default is true.
/// When there is no more data, is it necessary to keep the height of the custom view? If it is false, it will not be displayed.
var isVisibleNoMore: Bool { get }
/// @optional, default is true.
/// Whether to send a request only once per drag. If it is false, it will be called continuously when the offset changes.
var isOnlyRefreshPerDrag: Bool { get }
/// @optional, default is .zero.
/// -top: increase the distance from scrollview.
/// -left and right: set the horizontal offset.
/// -bottom: increase the distance from the bottom.
var loadMoreInsets: UIEdgeInsets { get }
/**
In this method, set the UI in different states.
There are three status types: initial, refreshing, noMore.
- parameter previous: previous load more state
- parameter newState: new load more state
*/
func loadMoreStateChanged(previous: LoadMoreState, newState: LoadMoreState)
/// do something...
}
}
let someView = SomeView(frame: ...)
scrollView.loadMore.setup(view: someView) {
/// do something...
self.scrollView.loadMore.endRefreshing(noMore: Bool)
}
需求
主
- iOS 8.0+
- Xcode 10+ (Swift 4.2 + Swift 5.0)
0.4.7
- iOS 8.0+
- Xcode 9.x (Swift 4)
0.3.0
- iOS 8.0+
- Xcode 9.x (Swift 3.x)
安装
CocoaPods
在您的 Podfile
中:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
pod "GSRefresh"
并在您的 *.swift
中:
import GSRefresh
Carthage
在您的 Cartfile
中:
github "wxxsw/GSRefresh"
并在您的 *.swift
中:
import GSRefresh
许可证
GSRefresh 可在 MIT 许可下使用。更多信息请参阅 LICENSE 文件。