Github url

MJRefresh

by CoderMJLee

CoderMJLee /MJRefresh

An easy way to use pull-to-refresh.

13.2K Stars 3.5K Forks Last release: about 2 months ago (3.4.3) MIT License 362 Commits 96 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

MJRefresh

Carthage compatible podversion

  • An easy way to use pull-to-refresh

📜✍🏻Release Notes: more details

Contents

Support what kinds of controls to refresh

  • UIScrollView
    UITableView
    UICollectionView
    WKWebView

How to use MJRefresh

  • Installation with CocoaPods:
    pod 'MJRefresh'
  • Installation with Carthage
    github "CoderMJLee/MJRefresh"
  • Manual import:
    • Drag All files in the
      MJRefresh
      folder to project
    • Import the main file:
      #import "MJRefresh.h"
Base Custom MJRefresh.bundle MJRefresh.h MJRefreshConst.h MJRefreshConst.m UIScrollView+MJExtension.h UIScrollView+MJExtension.m UIScrollView+MJRefresh.h UIScrollView+MJRefresh.m UIView+MJExtension.h UIView+MJExtension.m

More than hundreds of Apps are using MJRefresh

* More information of App can focus on:M了个J-博客园

The Class Structure Chart of MJRefresh

-

The class of red text

in the chart:You can use them directly - The drop-down refresh control types - Normal:

MJRefreshNormalHeader
  • Gif:
    MJRefreshGifHeader
  • The pull to refresh control types - Auto refresh - Normal:
    MJRefreshAutoNormalFooter
  • Gif:
    MJRefreshAutoGifFooter
  • Auto Back - Normal:
    MJRefreshBackNormalFooter
  • Gif:
    MJRefreshBackGifFooter
    • The class of non-red text
      in the chart:For inheritance,to use DIY the control of refresh - About how to DIY the control of refresh,You can refer the Class in below Chart

      MJRefreshComponent.h

/\*\* The Base Class of refresh control \*/ @interface MJRefreshComponent : UIView #pragma mark - Control the state of Refresh /\*\* BeginRefreshing \*/ - (void)beginRefreshing; /\*\* EndRefreshing \*/ - (void)endRefreshing; /\*\* IsRefreshing \*/ - (BOOL)isRefreshing; #pragma mark - Other /\*\* According to the drag ratio to change alpha automatically \*/ @property (assign, nonatomic, getter=isAutomaticallyChangeAlpha) BOOL automaticallyChangeAlpha; @end

MJRefreshHeader.h

@interface MJRefreshHeader : MJRefreshComponent /\*\* Creat header \*/ + (instancetype)headerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock; /\*\* Creat header \*/ + (instancetype)headerWithRefreshingTarget:(id)target refreshingAction:(SEL)action; /\*\* This key is used to storage the time that the last time of drown-down successfully \*/ @property (copy, nonatomic) NSString \*lastUpdatedTimeKey; /\*\* The last time of drown-down successfully \*/ @property (strong, nonatomic, readonly) NSDate \*lastUpdatedTime; /\*\* Ignored scrollView contentInset top \*/ @property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetTop; @end

MJRefreshFooter.h

@interface MJRefreshFooter : MJRefreshComponent /\*\* Creat footer \*/ + (instancetype)footerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock; /\*\* Creat footer \*/ + (instancetype)footerWithRefreshingTarget:(id)target refreshingAction:(SEL)action; /\*\* NoticeNoMoreData \*/ - (void)noticeNoMoreData; /\*\* ResetNoMoreData(Clear the status of NoMoreData ) \*/ - (void)resetNoMoreData; /\*\* Ignored scrollView contentInset bottom \*/ @property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetBottom; @end

MJRefreshAutoFooter.h

@interface MJRefreshAutoFooter : MJRefreshFooter /\*\* Is Automatically Refresh(Default is Yes) \*/ @property (assign, nonatomic, getter=isAutomaticallyRefresh) BOOL automaticallyRefresh; /\*\* When there is much at the bottom of the control is automatically refresh(Default is 1.0,Is at the bottom of the control appears in full, will refresh automatically) \*/ @property (assign, nonatomic) CGFloat triggerAutomaticallyRefreshPercent; @end

Reference

\* Due to there are more functions of this framework,Don't write specific text describe its usage \* You can directly reference examples MJTableViewController、MJCollectionViewController、MJWebViewController,More intuitive and fast.

The drop-down refresh 01-Default

self.tableView.mj\_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{ //Call this Block When enter the refresh status automatically }]; 或 // Set the callback(Once you enter the refresh status,then call the action of target,that is call [self loadNewData]) self.tableView.mj\_header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)]; // Enter the refresh status immediately [self.tableView.mj\_header beginRefreshing];

(下拉刷新01-普通)

The drop-down refresh 02-Animation image

// Set the callback(一Once you enter the refresh status,then call the action of target,that is call [self loadNewData]) MJRefreshGifHeader \*header = [MJRefreshGifHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)]; // Set the ordinary state of animated images [header setImages:idleImages forState:MJRefreshStateIdle]; // Set the pulling state of animated images(Enter the status of refreshing as soon as loosen) [header setImages:pullingImages forState:MJRefreshStatePulling]; // Set the refreshing state of animated images [header setImages:refreshingImages forState:MJRefreshStateRefreshing]; // Set header self.tableView.mj\_header = header;

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

The drop-down refresh 03-Hide the time

// Hide the time header.lastUpdatedTimeLabel.hidden = YES;

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

The drop-down refresh 04-Hide status and time

// Hide the time header.lastUpdatedTimeLabel.hidden = YES; // Hide the status header.stateLabel.hidden = YES;

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

The drop-down refresh 05-DIY title

// Set title [header setTitle:@"Pull down to refresh" forState:MJRefreshStateIdle]; [header setTitle:@"Release to refresh" forState:MJRefreshStatePulling]; [header setTitle:@"Loading ..." forState:MJRefreshStateRefreshing]; // Set font header.stateLabel.font = [UIFont systemFontOfSize:15]; header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:14]; // Set textColor header.stateLabel.textColor = [UIColor redColor]; header.lastUpdatedTimeLabel.textColor = [UIColor blueColor];

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

The drop-down refresh 06-DIY the control of refresh

self.tableView.mj\_header = [MJDIYHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)]; // Implementation reference to MJDIYHeader.h和MJDIYHeader.m

(下拉刷新06-自定义刷新控件)

The pull to refresh 01-Default

self.tableView.mj\_footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{ //Call this Block When enter the refresh status automatically }]; 或 // Set the callback(Once you enter the refresh status,then call the action of target,that is call [self loadMoreData]) self.tableView.mj\_footer = [MJRefreshAutoNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];

(上拉刷新01-默认)

The pull to refresh 02-Animation image

// Set the callback(Once you enter the refresh status,then call the action of target,that is call [self loadMoreData]) MJRefreshAutoGifFooter \*footer = [MJRefreshAutoGifFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)]; // Set the refresh image [footer setImages:refreshingImages forState:MJRefreshStateRefreshing]; // Set footer self.tableView.mj\_footer = footer;

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

The pull to refresh 03-Hide the title of refresh status

// Hide the title of refresh status footer.refreshingTitleHidden = YES; // If does have not above method,then use footer.stateLabel.hidden = YES;

(上拉刷新03-隐藏刷新状态的文字)

The pull to refresh 04-All loaded

//Become the status of NoMoreData [footer noticeNoMoreData];

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

The pull to refresh 05-DIY title

// Set title [footer setTitle:@"Click or drag up to refresh" forState:MJRefreshStateIdle]; [footer setTitle:@"Loading more ..." forState:MJRefreshStateRefreshing]; [footer setTitle:@"No more data" forState:MJRefreshStateNoMoreData]; // Set font footer.stateLabel.font = [UIFont systemFontOfSize:17]; // Set textColor footer.stateLabel.textColor = [UIColor blueColor];

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

The pull to refresh 06-Hidden After loaded

//Hidden current control of the pull to refresh self.tableView.mj\_footer.hidden = YES;

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

The pull to refresh 07-Automatic back of the pull01

self.tableView.mj\_footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];

(上拉刷新07-自动回弹的上拉01)

The pull to refresh 08-Automatic back of the pull02

MJRefreshBackGifFooter \*footer = [MJRefreshBackGifFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)]; // Set the normal state of the animated image [footer setImages:idleImages forState:MJRefreshStateIdle]; // Set the pulling state of animated images(Enter the status of refreshing as soon as loosen) [footer setImages:pullingImages forState:MJRefreshStatePulling]; // Set the refreshing state of animated images [footer setImages:refreshingImages forState:MJRefreshStateRefreshing]; // Set footer self.tableView.mj\_footer = footer;

(上拉刷新07-自动回弹的上拉02)

The pull to refresh 09-DIY the control of refresh(Automatic refresh)

self.tableView.mj\_footer = [MJDIYAutoFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)]; // Implementation reference to MJDIYAutoFooter.h和MJDIYAutoFooter.m

(上拉刷新09-自定义刷新控件(自动刷新))

The pull to refresh 10-DIY the control of refresh(Automatic back)

self.tableView.mj\_footer = [MJDIYBackFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)]; // Implementation reference to MJDIYBackFooter.h和MJDIYBackFooter.m

(上拉刷新10-自定义刷新控件(自动回弹))

UICollectionView01-The pull and drop-down refresh

// The drop-down refresh self.collectionView.mj\_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{ //Call this Block When enter the refresh status automatically }]; // The pull to refresh self.collectionView.mj\_footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{ //Call this Block When enter the refresh status automatically }];

(UICollectionView01-上下拉刷新)

WKWebView01-The drop-down refresh

//Add the control of The drop-down refresh self.webView.scrollView.mj\_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{ //Call this Block When enter the refresh status automatically }];

(UICollectionView01-上下拉刷新)

Remind

  • ARC
  • iOS>=8.0
  • iPhone \ iPad screen anyway

寻求志同道合的小伙伴

  • 因本人工作忙,没有太多时间去维护MJRefresh,在此向广大框架使用者说声:非常抱歉!😞
  • 现寻求志同道合的小伙伴一起维护此框架,有兴趣的小伙伴可以发邮件给我,非常感谢😊
  • 如果一切OK,我将开放框架维护权限(github、pod等)
  • 目前已经找到3位小伙伴(^-^)V

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.