下拉刷新数据gif动画下拉框

2020-03-26  本文已影响0人  架构师的一小步
@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

上一篇 下一篇

猜你喜欢

热点阅读