@property (nonatomic, strong) NSMutableArray *normalImages;
@property (nonatomic, strong) NSMutableArray *refreshImages;
方式一、将gif图片解析成图片数组
// NSMutableArray *gifImages=[NSMutableArray array];
// NSString *path=[[NSBundle mainBundle]pathForResource:@"frontpage_refresh@2x" ofType:@"gif"];
// gifImages=[NSMutableArray praseGIFDataToImageArray:[NSData dataWithContentsOfFile:path]];
方式二、 将gif图片分解成多个图的图片再添加可以让UI做,这里直接将图片添加到图片数组
MJRefreshGifHeader *header = [MJRefreshGifHeader headerWithRefreshingTarget:self refreshingAction:@selector(doRefreshSenior)];
[header setImages:self.normalImages forState:MJRefreshStateIdle];
[header setImages:self.refreshImages forState:MJRefreshStatePulling];
// Set the refreshing state of animated images
// [header setImages:self.refreshImages forState:MJRefreshStateRefreshing ];
[header setImages:self.refreshImages duration:0.4f forState:MJRefreshStateRefreshing];
// Hide the time
header.lastUpdatedTimeLabel.hidden = YES;
// Hide the status
header.stateLabel.hidden = YES;
// Set header
self.tableView.mj_header = header;
[self.tableView.mj_header beginRefreshing];
- (NSMutableArray *)normalImages
{
if (_normalImages == nil) {
_normalImages = [[NSMutableArray alloc] init];
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"pullDownRefresh1"]];
[self.normalImages addObject:image];
}
return _normalImages;
}
//正在刷新状态下的图片
- (NSMutableArray *)refreshImages
{
if (_refreshImages == nil) {
_refreshImages = [[NSMutableArray alloc] init];
// 循环添加图片
for (NSUInteger i = 1; i<=2; i++) {
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"pullDownRefresh%ld", i]];
[self.refreshImages addObject:image];
}
}
return _refreshImages;
}
GIF图片处理
+(NSMutableArray *)praseGIFDataToImageArray:(NSData *)data;
{
NSMutableArray *frames = [[NSMutableArray alloc] init];
CGImageSourceRef src = CGImageSourceCreateWithData((CFDataRef)data, NULL);
CGFloat animationTime = 0.f;
if (src) {
size_t l = CGImageSourceGetCount(src);
frames = [NSMutableArray arrayWithCapacity:l];
for (size_t i = 0; i < l; i++) {
CGImageRef img = CGImageSourceCreateImageAtIndex(src, i, NULL);
NSDictionary *properties = (NSDictionary *)CFBridgingRelease(CGImageSourceCopyPropertiesAtIndex(src, i, NULL));
NSDictionary *frameProperties = [properties objectForKey:(NSString *)kCGImagePropertyGIFDictionary];
NSNumber *delayTime = [frameProperties objectForKey:(NSString *)kCGImagePropertyGIFUnclampedDelayTime];
animationTime += [delayTime floatValue];
if (img) {
[frames addObject:[UIImage imageWithCGImage:img]];
CGImageRelease(img);
}
}
CFRelease(src);
}
return frames;
}
参考文章:https://www.ucloud.cn/yun/15974.html
https://blog.csdn.net/junfeng09/article/details/50220177?utm_source=blogxgwz6
网友评论