项目中需要使用下拉的动画效果,MJ上的是图片在左,文字在右(而且没有样式选择),我们需要的是图片在上文字在下,我们只需要继承MJRefreshGifHeader,即可修改样式。
代码:
-(void)prepare{
[super prepare];
// 设置普通状态的动画图片
NSMutableArray *idleImages = [NSMutableArray array];
for (NSUInteger i = 1; i<=60; i++) {
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"dropdown_anim__000%zd", i]];
[idleImages addObject:image];
}
[self setImages:idleImages forState:MJRefreshStateIdle];
// 设置即将刷新状态的动画图片(一松开就会刷新的状态)
NSMutableArray *refreshingImages = [NSMutableArray array];
for (NSUInteger i = 1; i<=3; i++) {
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"dropdown_loading_0%zd", i]];
[refreshingImages addObject:image];
}
[self setImages:refreshingImages forState:MJRefreshStatePulling];
[self setImages:refreshingImages forState:MJRefreshStateRefreshing];
self.lastUpdatedTimeLabel.hidden = YES;
self.stateLabel.hidden = NO;
self.stateLabel.textColor = [UIColor blackColor];
self.mj_h = 80;
}
//在这修改图片和label的位置
- (void)placeSubviews
{
[super placeSubviews];
self.gifView.contentMode = UIViewContentModeCenter;
//调整图片的位置
CGRect labelframe = self.stateLabel.frame;
labelframe.size.height = 15;
labelframe.origin.y = self.bounds.size.height - 20;
self.stateLabel.frame = labelframe;
CGPoint center = self.center;
center.y = CGRectGetMinY(self.stateLabel.frame) - self.gifView.mj_h / 2.0;
self.gifView.center = center;
}