1.首先去github上下載最新版 MJ刷新庫 下載MJ鏈接
2.tableVIew中加入相關代碼
_tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, MCAPPWidth, MCAPPHeight - 64)];
_tableView.backgroundColor = myClearColor;
_tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
_tableView.delegate = self;
_tableView.dataSource = self;
_tableView.showsVerticalScrollIndicator = NO;
_tableView.scrollsToTop = YES;
[self.view addSubview:_tableView];
[_tableView addGifHeaderWithRefreshingTarget:self refreshingAction:@selector(loadData)];
[_tableView addGifFooterWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
[self gif];
//loadData 為你下拉刷新時請求網絡數據的方法 loadMoreData為你上拉加載時請求網絡數據的方法
3. [self gif]
- (void)gif
{
NSMutableArray *idleImages = [NSMutableArray array];
//這塊為你刷新時出現的gif圖 需要循環添加到數組中
for (NSUInteger i = 1; i <= 5; i++) {
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@img_loading-%lu.png, (unsigned long)i]];
[idleImages addObject:image];
}
[_tableView.gifHeader setImages:idleImages forState:MJRefreshHeaderStateIdle];
_tableView.gifFooter.refreshingImages = idleImages;
_tableView.gifHeader.updatedTimeHidden = YES;
// 設置即將刷新狀態的動畫圖片(一松開就會刷新的狀態)
NSMutableArray *refreshingImages = [NSMutableArray array];
for (NSUInteger i = 1; i <= 5; i++) {
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@img_loading-%lu.png, (unsigned long)i]];
[refreshingImages addObject:image];
}
[_tableView.gifHeader setImages:refreshingImages forState:MJRefreshHeaderStatePulling];
}
4. 自定義刷新時頂部底部出現的Label和gif圖的frame 這裡舉footer的例子
MJRefreshGifFooter.m
- (void)layoutSubviews
{
[super layoutSubviews];
// 指示器 gif圖的frame
self.gifView.frame = CGRectMake(self.bounds.origin.x + 20, self.bounds.origin.y + 15, self.bounds.size.width / 2, self.bounds.size.height / 2);
if (self.stateHidden) {
self.gifView.contentMode = UIViewContentModeCenter;
} else {
self.gifView.contentMode = UIViewContentModeScaleAspectFit;
self.gifView.mj_w = self.mj_w * 0.5 - 90;
}
}
MJRefreshFooter.m
- (void)layoutSubviews
{
[super layoutSubviews];
self.loadMoreButton.frame = self.bounds;
self.loadMoreButton.hidden = YES;
//Label的frame
self.stateLabel.frame = CGRectMake(self.bounds.origin.x, self.bounds.origin.y + 15, self.bounds.size.width, self.bounds.size.height / 2);
self.noMoreLabel.frame = self.bounds;
}
同理header的gif圖frame 和Labelframe 都在相應的類裡的方法裡 都可以根據需求去修改
更多的設置可以看下MJ在github上相關的文檔。