DSGifHeader.m
2.0 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
//
// DSGifHeader.m
// DreamSleep
//
// Created by peter on 2022/4/5.
//
#import "DSGifHeader.h"
#import "UIImage+Extras.h"
@implementation DSGifHeader
#pragma mark - 重写父类的方法
- (void)prepare {
[super prepare];
// 设置普通状态的动画图片
NSMutableArray *idleImages = [NSMutableArray array];
for (NSUInteger i = 0; i < 30; i++) {
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"pulldown_000%zd", i]];
[idleImages addObject:image];
}
[self setImages:idleImages forState:MJRefreshStateIdle];
// 设置即将刷新状态的动画图片(一松开就会刷新的状态)
NSMutableArray *refreshingImages = [NSMutableArray array];
for (NSUInteger i = 0; i < 3; i++) {
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"loading_%zd", i]];
[refreshingImages addObject:image];
}
[self setImages:refreshingImages forState:MJRefreshStatePulling];
// 设置正在刷新状态的动画图片
[self setImages:refreshingImages forState:MJRefreshStateRefreshing];
// 隐藏时间
self.lastUpdatedTimeLabel.hidden = YES;
// 隐藏状态
self.stateLabel.hidden = YES;
}
// 获取gif图片数组(代码获取一帧一帧图片会很卡)
- (NSArray *)cdi_imagesWithGif {
NSURL *fileUrl = [[NSBundle mainBundle] URLForResource:@"pull_down" withExtension:@"gif"];
CGImageSourceRef gifSource = CGImageSourceCreateWithURL((CFURLRef)fileUrl, NULL);
size_t gifCount = CGImageSourceGetCount(gifSource);
NSMutableArray *frames = [[NSMutableArray alloc]init];
for (size_t i = 0; i< gifCount; i++) {
CGImageRef imageRef = CGImageSourceCreateImageAtIndex(gifSource, i, NULL);
UIImage *image = [UIImage imageWithCGImage:imageRef];
UIImage *newImage = [image imageByScalingToSize:CGSizeMake(90, 80)];
[frames addObject:newImage];
CGImageRelease(imageRef);
}
return frames;
}
@end