SSPullToRefresh 1.3.0

SSPullToRefresh 1.3.0

测试已测试
语言语言 Obj-CObjective C
许可协议 MIT
发布最新发布2017年4月

Sam Soffes维护。



  • 作者
  • Sam Soffes

有数十种下拉刷新视图。我从未找到让我满意的一个。我总是自定义一个,所以我决定写一个高度可自定义的。你只需编写你的内容视图,然后忘记实际下拉刷新的细节。

如果你在你的应用程序中使用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

提供的内容视图

SSPullToRefreshDefaultContentViewSSPullToRefreshSimpleContentView由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 拉刷新功能的启发。这个故事就这样开始了。

享受吧。