有数十种下拉刷新视图。我从未找到让我满意的一个。我总是自定义一个,所以我决定写一个高度可自定义的。你只需编写你的内容视图,然后忘记实际下拉刷新的细节。
如果你在你的应用程序中使用SSPullToRefresh,请将其添加到该列表中。
// If automaticallyAdjustsScrollViewInsets is set to NO:
- (void)viewDidLoad {
[super viewDidLoad];
self.pullToRefreshView = [[SSPullToRefreshView alloc] initWithScrollView:self.tableView delegate:self];
}
// If automaticallyAdjustsScrollViewInsets is set to YES:
- (void)viewDidLayoutSubviews {
if(self.pullToRefreshView == nil) {
self.pullToRefreshView = [[SSPullToRefreshView alloc] initWithScrollView:self.tableView delegate:self];
}
}
- (void)viewDidUnload {
[super viewDidUnload];
self.pullToRefreshView = nil;
}
- (void)refresh {
[self.pullToRefreshView startLoading];
// Load data...
[self.pullToRefreshView finishLoading];
}
- (void)pullToRefreshViewDidStartLoading:(SSPullToRefreshView *)view {
[self refresh];
}
通常在我的视图控制器中创建一个名为loading
的属性,然后在刷新时将其设置为YES
。然后在自定义设置器中,如果它已经是YES
则返回。当状态改变时,它将调用startLoading
并执行网络调用。然后当网络活动完成后,它将设置回NO
,并由客户设置器处理调用finishLoading
和其他操作。
NSScreencast的优质团队有一期关于SSPullToRefresh的绝佳视频,甚至还包括使用Core Graphics实现自定义内容视图。查看它。
SSPullToRefresh视图高度可自定义。所有下拉逻辑、动画等都在SSPullToRefreshView中为你包装好。它没有任何UI。它的contentView
处理显示UI。默认情况下,它设置一个SSSimplePullToRefreshContentView
示例作为contentView
。
SSPullToRefreshDefaultContentView和SSPullToRefreshSimpleContentView由SSPullToRefresh提供。如果您不提供内容视图,则默认使用SSPullToRefreshDefaultContentView
。要使用提供的简单内容视图,只需设置即可
pullToRefreshView.contentView = [[SSPullToRefreshSimpleContentView alloc] initWithFrame:CGRectZero];
您可以简单地对SSPullToRefreshDefaultContentView
进行子类化,或实现自己的视图并使其符合SSPullToRefreshContentView
。您必须实现以下方法
- (void)setState:(SSPullToRefreshViewState)state withPullToRefreshView:(SSPullToRefreshView *)view
此方法将在状态改变时被调用。以下是可能的状态。建议大多数状态实现UI,但您可以按自己的意愿进行。
SSPullToRefreshViewStateNormal
(推荐)——在这种状态下大多数人会说“下拉刷新”SSPullToRefreshViewStateReady
(推荐)——在这种状态下大多数人会说出“释放刷新”SSPullToRefreshViewStateLoading
(推荐)——视图正在加载SSPullToRefreshViewStateClosing
(可选) —— 视图已加载完成并正在动画关闭中您也可以选择实现此方法
- (void)setLastUpdatedAt:(NSDate *)date withPullToRefreshView:(SSPullToRefreshView *)view
Carthage 是安装 SSPullToRefresh 的推荐方式。在您的 Cartfile 中添加以下内容
github "soffes/sspulltorefresh"
您也可以使用 CocoaPods 进行安装
pod 'SSPullToRefresh'
对于手动安装,我建议将项目作为子项目添加到您的项目中或工作区中,并将框架添加为目标依赖项。
我从 chpwn 的 PullToRefreshView 中获得了一些灵感,该视图基于 EGOTableViewPullRefresh,而 EGOTableViewPullRefresh 则受到了 Loren Brichter 设计的 Tweetie 拉刷新功能的启发。这个故事就这样开始了。
享受吧。