MJRefresh框架與UIScrollView、UITableView、UICollectionView、UIWebView完美結合
cocoapods導入:pod ‘MJRefresh’
手動導入:
將MJRefresh文件夾中的所有文件拽入項目中
導入主頭文件:#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
MJRefresh類結構圖
圖中紅色文字的類:可以直接拿來用
下拉刷新控件的種類
默認(Normal):MJRefreshNormalHeader
動圖(Gif):MJRefreshGifHeader
上拉刷新控件的種類
自動刷新(Auto)
默認(Normal):MJRefreshAutoNormalFooter
動圖(Gif):MJRefreshAutoGifFooter
自動回彈(Back)
默認(Normal):MJRefreshBackNormalFooter
動圖(Gif):MJRefreshBackGifFooter
圖中非紅色文字的類:拿來繼承,用於自定義刷新控件
關於如何自定義刷新控件,可以參考下圖的類
下拉刷新01-默認
self.tableView.header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
// 進入刷新狀態後會自動調用這個block
}];
或
// 設置回調(一旦進入刷新狀態,就調用target的action,也就是調用self的loadNewData方法)
self.tableView.header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];
// 馬上進入刷新狀態
[self.tableView.header beginRefreshing];
下拉刷新02-動畫圖片
// 設置回調(一旦進入刷新狀態,就調用target的action,也就是調用self的loadNewData方法)
MJRefreshGifHeader *header = [MJRefreshGifHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];
// 設置普通狀態的動畫圖片
[header setImages:idleImages forState:MJRefreshStateIdle];
// 設置即將刷新狀態的動畫圖片(一鬆開就會刷新的狀態)
[header setImages:pullingImages forState:MJRefreshStatePulling];
// 設置正在刷新狀態的動畫圖片
[header setImages:refreshingImages forState:MJRefreshStateRefreshing];
// 設置header
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:^{
// 進入刷新狀態後會自動調用這個block
}];
或
// 設置回調(一旦進入刷新狀態,就調用target的action,也就是調用self的loadMoreData方法)
self.tableView.footer = [MJRefreshAutoNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
上拉刷新02-動畫圖片
// 設置回調(一旦進入刷新狀態,就調用target的action,也就是調用self的loadMoreData方法)
MJRefreshAutoGifFooter *footer = [MJRefreshAutoGifFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
// 設置刷新圖片
[footer setImages:refreshingImages forState:MJRefreshStateRefreshing];
// 設置尾部
self.tableView.footer = footer;