MJRefresh–用法最簡單的下拉刷新框架


簡介

用於為應用添加常用的上拉加載更多與下拉刷新效果,適用 UIScrollView 、 UITableView 、 UICollectionView 、 UIWebView.

項目主頁: MJRefresh

最新示例: 點擊下載

快速入門

使用環境

  • ARC
  • iOS 6.0 +

安裝

通過CocoaPods安裝

pod 'MJRefresh'

手動安裝

將 MJRefresh 文件夾中的所有文件拽入項目中,在需要的地方導入主頭文件:

 

類結構圖

MJRefreshComponent.h

/** 刷新控件的基類 */
@interface MJRefreshComponent : UIView
#pragma mark - 刷新狀態控制
/** 進入刷新狀態 */
- (void)beginRefreshing;
/** 結束刷新狀態 */
- (void)endRefreshing;
/** 是否正在刷新 */
- (BOOL)isRefreshing;

#pragma mark - 其他
/** 根據拖拽比例自動切換透明度 */
@property (assign, nonatomic, getter=isAutomaticallyChangeAlpha) BOOL automaticallyChangeAlpha;
@end

MJRefreshHeader.h

@interface MJRefreshHeader : MJRefreshComponent
/** 創建header */
+ (instancetype)headerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock;
/** 創建header */
+ (instancetype)headerWithRefreshingTarget:(id)target refreshingAction:(SEL)action;

/** 這個key用來存儲上一次下拉刷新成功的時間 */
@property (copy, nonatomic) NSString *lastUpdatedTimeKey;
/** 上一次下拉刷新成功的時間 */
@property (strong, nonatomic, readonly) NSDate *lastUpdatedTime;

/** 忽略多少scrollView的contentInset的top */
@property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetTop;
@end

MJRefreshFooter.h

@interface MJRefreshFooter : MJRefreshComponent
/** 創建footer */
+ (instancetype)footerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock;
/** 創建footer */
+ (instancetype)footerWithRefreshingTarget:(id)target refreshingAction:(SEL)action;

/** 提示沒有更多的數據 */
- (void)noticeNoMoreData;
/** 重置沒有更多的數據(消除沒有更多數據的狀態) */
- (void)resetNoMoreData;

/** 忽略多少scrollView的contentInset的bottom */
@property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetBottom;

/** 自動根據有無數據來顯示和隱藏(有數據就顯示,沒有數據隱藏) */
@property (assign, nonatomic) BOOL automaticallyHidden;
@end

MJRefreshAutoFooter.h

@interface MJRefreshAutoFooter : MJRefreshFooter
/** 是否自動刷新(默認為YES) */
@property (assign, nonatomic, getter=isAutomaticallyRefresh) BOOL automaticallyRefresh;

/** 當底部控件出現多少時就自動刷新(默認為1.0,也就是底部控件完全出現時,才會自動刷新) */
@property (assign, nonatomic) CGFloat appearencePercentTriggerAutoRefresh;
@end

示例

下拉刷新01-默認

self.tableView.header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
  
}];
或

self.tableView.header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];

[self.tableView.header beginRefreshing];

下拉刷新02-動畫圖片

MJRefreshGifHeader *header = [MJRefreshGifHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];

[header setImages:idleImages forState:MJRefreshStateIdle];

[header setImages:pullingImages forState:MJRefreshStatePulling];

[header setImages:refreshingImages forState:MJRefreshStateRefreshing];

self.tableView.header = header;

下拉刷新03-隱藏時間

header.lastUpdatedTimeLabel.hidden = YES;

下拉刷新04-隱藏狀態和時間

header.lastUpdatedTimeLabel.hidden = YES;


header.stateLabel.hidden = YES;

下拉刷新05-自定義文字

[header setTitle:@"Pull down to refresh" forState:MJRefreshStateIdle];
[header setTitle:@"Release to refresh" forState:MJRefreshStatePulling];
[header setTitle:@"Loading ..." forState:MJRefreshStateRefreshing];


header.stateLabel.font = [UIFont systemFontOfSize:15];
header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:14];


header.stateLabel.textColor = [UIColor redColor];
header.lastUpdatedTimeLabel.textColor = [UIColor blueColor];

下拉刷新06-自定義刷新控件

self.tableView.header = [MJDIYHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];
// 具體實現參考MJDIYHeader.h和MJDIYHeader.m

上拉刷新01-默認

self.tableView.footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
   
}];
或

self.tableView.footer = [MJRefreshAutoNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];

上拉刷新02-動畫圖片

MJRefreshAutoGifFooter *footer = [MJRefreshAutoGifFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];


[footer setImages:refreshingImages forState:MJRefreshStateRefreshing];


self.tableView.footer = footer;

上拉刷新03-隱藏刷新狀態的文字

footer.refreshingTitleHidden = YES;

上拉刷新04-全部加載完畢

[footer noticeNoMoreData];

上拉刷新05-自定義文字

[footer setTitle:@"Click or drag up to refresh" forState:MJRefreshStateIdle];
[footer setTitle:@"Loading more ..." forState:MJRefreshStateRefreshing];
[footer setTitle:@"No more data" forState:MJRefreshStateNoMoreData];


footer.stateLabel.font = [UIFont systemFontOfSize:17];


footer.stateLabel.textColor = [UIColor blueColor];

上拉刷新06-加載后隱藏

self.tableView.footer.hidden = YES;

上拉刷新07-自動回彈的上拉01

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

上拉刷新08-自動回彈的上拉02

MJRefreshBackGifFooter *footer = [MJRefreshBackGifFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];

// 設置普通狀態的動畫圖片
[footer setImages:idleImages forState:MJRefreshStateIdle];
// 設置即將刷新狀態的動畫圖片(一松開就會刷新的狀態)
[footer setImages:pullingImages forState:MJRefreshStatePulling];
// 設置正在刷新狀態的動畫圖片
[footer setImages:refreshingImages forState:MJRefreshStateRefreshing];

// 設置尾部
self.tableView.footer = footer;

上拉刷新09-自定義刷新控件(自動刷新)

self.tableView.footer = [MJDIYAutoFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
// 具體實現參考MJDIYAutoFooter.h和MJDIYAutoFooter.m

上拉刷新10-自定義刷新控件(自動回彈)

self.tableView.footer = [MJDIYBackFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
// 具體實現參考MJDIYBackFooter.h和MJDIYBackFooter.m

UICollectionView01-上下拉刷新

self.collectionView.header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
  
}];

self.collectionView.footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
  
}];

UIWebView01-下拉刷新

self.webView.scrollView.header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
   
}];


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM