/MJRefresh

The easiest way to use pull-to-refresh

Primary LanguageObjective-CMIT LicenseMIT

MJRefresh

The easiest way to use pull-to-refresh

支持哪些控件的刷新

  • UIScrollViewUITableViewUICollectionViewUIWebView

如何使用MJRefresh

  • cocoapods导入:pod 'MJRefresh'
  • 手动导入:
    • MJRefreshExample/MJRefreshExample/MJRefresh文件夹中的所有文件拽入项目中
    • 导入主头文件:#import "MJRefresh.h"
MJRefresh.bundle
MJRefresh.h
MJRefreshComponent.h        MJRefreshComponent.m
MJRefreshConst.h            MJRefreshConst.m
MJRefreshFooter.h           MJRefreshFooter.m
MJRefreshGifFooter.h        MJRefreshGifFooter.m
MJRefreshGifHeader.h        MJRefreshGifHeader.m
MJRefreshHeader.h           MJRefreshHeader.m
MJRefreshLegendFooter.h     MJRefreshLegendFooter.m
MJRefreshLegendHeader.h     MJRefreshLegendHeader.m
UIScrollView+MJExtension.h  UIScrollView+MJExtension.m
UIScrollView+MJRefresh.h    UIScrollView+MJRefresh.m
UIView+MJExtension.h        UIView+MJExtension.m

有哪些App正在使用MJRefresh

(App01) (App02)

具体用法

* 由于这个框架的功能较多,就不写具体文字描述其用法
* 大家可以直接参考示例中的MJTableViewController和MJCollectionViewController,更为直观快速

下拉刷新01-传统

(下拉刷新01-传统)

// 添加传统的下拉刷新
[self.tableView addLegendHeaderWithRefreshingBlock:^{
   // 进入刷新状态后会自动调用这个block
}];
或
// 添加传统的下拉刷新
// 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadNewData方法)
[self.tableView addLegendHeaderWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];

// 马上进入刷新状态
[self.tableView.header beginRefreshing];

下拉刷新02-动画图片

(下拉刷新02-动画图片)

// 添加动画图片的下拉刷新
// 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadNewData方法)
[self.tableView addGifHeaderWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];
// 设置普通状态的动画图片
[self.tableView.gifHeader setImages:idleImages forState:MJRefreshHeaderStateIdle];
// 设置即将刷新状态的动画图片(一松开就会刷新的状态)
[self.tableView.gifHeader setImages:pullingImages forState:MJRefreshHeaderStatePulling];
// 设置正在刷新状态的动画图片
[self.tableView.gifHeader setImages:refreshingImages forState:MJRefreshHeaderStateRefreshing];

下拉刷新03-隐藏时间

(下拉刷新03-隐藏时间)

// 隐藏时间
self.tableView.header.updatedTimeHidden = YES;

下拉刷新04-隐藏状态和时间01

(下拉刷新04-隐藏状态和时间01)

// 隐藏时间
self.tableView.header.updatedTimeHidden = YES;
// 隐藏状态
self.tableView.header.stateHidden = YES;

下拉刷新05-隐藏状态和时间02

(下拉刷新05-隐藏状态和时间02)

下拉刷新06-自定义文字

(下拉刷新06-自定义文字)

// 设置文字
[self.tableView.header setTitle:@"Pull down to refresh" forState:MJRefreshHeaderStateIdle];
[self.tableView.header setTitle:@"Release to refresh" forState:MJRefreshHeaderStatePulling];
[self.tableView.header setTitle:@"Loading ..." forState:MJRefreshHeaderStateRefreshing];

// 设置字体
self.tableView.header.font = [UIFont systemFontOfSize:15];

// 设置颜色
self.tableView.header.textColor = [UIColor redColor];

上拉刷新01-传统

(上拉刷新01-传统)

// 添加传统的上拉刷新
[self.tableView addLegendFooterWithRefreshingBlock:^{
   // 进入刷新状态后会自动调用这个block
}];
或
// 添加传统的上拉刷新
// 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadMoreData方法)
[self.tableView addLegendFooterWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];

上拉刷新02-动画图片

(上拉刷新02-动画图片)

// 添加动画图片的上拉刷新
// 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadMoreData方法)
[self.tableView addGifFooterWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];

// 设置正在刷新状态的动画图片
self.tableView.gifFooter.refreshingImages = refreshingImages;

上拉刷新03-隐藏状态01

(上拉刷新03-隐藏状态01)

// 隐藏状态
self.tableView.footer.stateHidden = YES;

上拉刷新04-隐藏状态02

(上拉刷新04-隐藏状态02)

上拉刷新05-全部加载完毕

(上拉刷新05-全部加载完毕)

// 变为没有更多数据的状态
[self.tableView.footer noticeNoMoreData];

上拉刷新06-禁止自动加载

(上拉刷新06-禁止自动加载)

// 禁止自动加载
self.tableView.footer.automaticallyRefresh = NO;

上拉刷新07-自定义文字

(上拉刷新07-自定义文字)

// 设置文字
[self.tableView.footer setTitle:@"Click or drag up to refresh" forState:MJRefreshFooterStateIdle];
[self.tableView.footer setTitle:@"Loading more ..." forState:MJRefreshFooterStateRefreshing];
[self.tableView.footer setTitle:@"No more data" forState:MJRefreshFooterStateNoMoreData];

// 设置字体
self.tableView.footer.font = [UIFont systemFontOfSize:17];

// 设置颜色
self.tableView.footer.textColor = [UIColor blueColor];

上拉刷新08-加载后隐藏

(上拉刷新08-加载后隐藏)

// 隐藏当前的上拉刷新控件
self.tableView.footer.hidden = YES;

UICollectionView01-上下拉刷新

(UICollectionView01-上下拉刷新)

// 添加传统的下拉刷新
[self.collectionView addLegendHeaderWithRefreshingBlock:^{
   // 进入刷新状态后会自动调用这个block
}];
// 添加传统的上拉刷新
[self.collectionView addLegendFooterWithRefreshingBlock:^{
   // 进入刷新状态后会自动调用这个block
}];

UIWebView01-下拉刷新

(UIWebView01-下拉刷新)

// 添加下拉刷新控件
[self.webView.scrollView addLegendHeaderWithRefreshingBlock:^{
    // 进入刷新状态后会自动调用这个block
}];

提醒

  • 本框架纯ARC,兼容的系统>=iOS6.0、iPhone\iPad横竖屏

期待

  • 如果在使用过程中遇到BUG,希望你能Issues我,谢谢(或者尝试下载最新的框架代码看看BUG修复没有)
  • 如果在使用过程中发现功能不够用,希望你能Issues我,我非常想为这个框架增加更多好用的功能,谢谢
  • 如果你想为MJRefresh输出代码,请拼命Pull Requests我
  • 一起携手打造天朝乃至世界最好用的刷新框架,做天朝程序员的骄傲
  • 如果你开发的应用中用到了MJRefresh,希望你能到CocoaControls添加你应用的iTunes路径,我将会安装使用你的应用,并且根据众多应用的使用情况,对MJRefresh进行一个更好的设计和完善,提供更多好用的功能,谢谢
    • 步骤01(微信是举个例子,百度“你的应用名称 itunes”) (step01)
    • 步骤02 (step02)
    • 步骤03 (step03)
    • 步骤04 (step04)