DSGifHeader.m 2.0 KB
//
//  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