在開發(fā)中時常需要加刷新動畫,在一個項目中不同頁面進(jìn)行加載,此時相同的加載動畫會在不同頁面出現(xiàn)。
1.自定義一個繼承于MJRefreshGifHeader的header類,如下圖

2.在建成的MJMyRefreshGifHeader.m中進(jìn)行我們需要的操作
重寫prepare方法,設(shè)置刷新不同狀態(tài)下的動畫效果,設(shè)置圖片間隔
代碼如下:
- (void)prepare
{
[super prepare];
// 設(shè)置普通狀態(tài)的動畫圖片組
NSMutableArray *idleImages = [NSMutableArray array];
for (NSUInteger i = 5; i<=5; i++)
{
//將圖片按照動畫效果進(jìn)行統(tǒng)一命名為:以dropdown_loading_0為開頭的名字,通過i進(jìn)行查找展示
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"dropdown_loading_0%zd", i]];
[idleImages addObject:image];
}
//通過setImages方法將自己的圖片設(shè)為MJRefreshStateIdle狀態(tài)圖片
[self setImages:idleImages forState:MJRefreshStateIdle];
// 隱藏刷新時間Lable
self.lastUpdatedTimeLabel.hidden = YES;
// 馬上進(jìn)入刷新狀態(tài)
[self beginRefreshing];
// 設(shè)置即將刷新狀態(tài)的動畫圖片(一松開就會刷新的狀態(tài))
NSMutableArray *refreshingImages = [NSMutableArray array];
for (NSUInteger i = 1; i<=6; i++)
{
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"dropdown_loading_0%zd", i]];
[refreshingImages addObject:image];
}
[self setImages:refreshingImages forState:MJRefreshStatePulling];
// 設(shè)置正在刷新狀態(tài)的動畫圖片
[self setImages:refreshingImages forState:MJRefreshStateRefreshing];
}
3.如果圖片位置跟預(yù)期不符,可以通過重新placeSubviews方法進(jìn)行位置修改
例如:
- (void)placeSubviews
{
[super placeSubviews];
//通過手機尺寸進(jìn)行g(shù)ifView位置的調(diào)整
if ([UIScreen mainScreen].bounds.size.width ==320)
{
self.gifView.mj_y = 10;
self.gifView.mj_x = 50;
self.gifView.mj_w = 220;
self.gifView.mj_h = 95;
}
else
{
self.gifView.mj_y = FitRealValue(10);
self.gifView.mj_x = FitRealValue(77);
self.gifView.mj_w = FitRealValue(221);
self.gifView.mj_h = FitRealValue(100);
}
//對狀態(tài)欄進(jìn)行調(diào)試
self.stateLabel.mj_y = self.gifView.mj_y + self.gifView.mj_h;
self.stateLabel.mj_h = self.mj_h * 0.2;
}
4.將mj_heade設(shè)置為MJMyRefreshGifHeader
MJMyRefreshGifHeader *header? =[MJMyRefreshGifHeader headerWithRefreshingTarget:self refreshingAction:@selector(refresh)];
self.tableView.mj_header = header;