在開發(fā)中時(shí)常需要加刷新動(dòng)畫蚯嫌,在一個(gè)項(xiàng)目中不同頁(yè)面進(jìn)行加載贬蛙,此時(shí)相同的加載動(dòng)畫會(huì)在不同頁(yè)面出現(xiàn)长搀。
1.自定義一個(gè)繼承于MJRefreshGifHeader的header類,如下圖
2.在建成的MJMyRefreshGifHeader.m中進(jìn)行我們需要的操作
重寫prepare方法匿辩,設(shè)置刷新不同狀態(tài)下的動(dòng)畫效果腰耙,設(shè)置圖片間隔
代碼如下:
- (void)prepare
{
[super prepare];
// 設(shè)置普通狀態(tài)的動(dòng)畫圖片組
NSMutableArray *idleImages = [NSMutableArray array];
for (NSUInteger i = 5; i<=5; i++)
{
//將圖片按照動(dòng)畫效果進(jìn)行統(tǒng)一命名為:以dropdown_loading_0為開頭的名字,通過(guò)i進(jìn)行查找展示
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"dropdown_loading_0%zd", i]];
[idleImages addObject:image];
}
//通過(guò)setImages方法將自己的圖片設(shè)為MJRefreshStateIdle狀態(tài)圖片
[self setImages:idleImages forState:MJRefreshStateIdle];
// 隱藏刷新時(shí)間Lable
self.lastUpdatedTimeLabel.hidden = YES;
// 馬上進(jìn)入刷新狀態(tài)
[self beginRefreshing];
// 設(shè)置即將刷新狀態(tài)的動(dòng)畫圖片(一松開就會(huì)刷新的狀態(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)的動(dòng)畫圖片
[self setImages:refreshingImages forState:MJRefreshStateRefreshing];
}
3.如果圖片位置跟預(yù)期不符铲球,可以通過(guò)重新placeSubviews方法進(jìn)行位置修改
例如:
- (void)placeSubviews
{
[super placeSubviews];
//通過(guò)手機(jī)尺寸進(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);
}
//對(duì)狀態(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;