工作生活

Gif-asset转NSData+FLAanimatedView

2019-07-04  本文已影响0人  守护地中海的花
PHImageRequestOptions *op = [[PHImageRequestOptions alloc]init];
    op.resizeMode = PHImageRequestOptionsResizeModeFast;
    op.synchronous = YES;
    PHCachingImageManager *cacheManager = [[PHCachingImageManager alloc]init];
    [cacheManager requestImageDataForAsset:assets[0] options:op resultHandler:^(NSData * _Nullable imageData, NSString * _Nullable dataUTI, UIImageOrientation orientation, NSDictionary * _Nullable info) {
        FLAnimatedImage *image = [[FLAnimatedImage alloc]initWithAnimatedGIFData:imageData];
        FLAnimatedImageView *iv = [[FLAnimatedImageView alloc]init];
        //NSDefaultRunLoopMode NSRunLoopCommonModes
        //初始化就给 不然后期会有问题 滑动暂停播放GIF
        iv.runLoopMode = NSDefaultRunLoopMode;
        [self addSubview:iv];
        iv.frame = CGRectMake(0, 0, 100, 100);
        iv.animatedImage = image;
        [iv setLoopCompletionBlock:^(NSUInteger loopCountRemaining) {
            NSLog(@"%ld",loopCountRemaining);
        }];
    }];

加载URL方式 -3种

自己写的线程加载 可以滑动暂停gif 用sd不行

 //设置暂停动画 没屌用 第一次加载gifmemory特别高 进来第二次加载就低很多了
                [self.coverIV sd_setImageWithURL:itemModel.coverUrl.wppURL placeholderImage:[UIImage getPNGimageInBundleWithName:kPlaceHoldBanner]];
                // 不是gif图了
                //[self.coverIV setImageURL:itemModel.coverUrl.wppURL];
                //这些会卡 但是内存特别低 可以设置滑动暂停动画 加入线程 不会卡啦 😄
                /*
                dispatch_async(dispatch_get_global_queue(0, 0), ^{
                   FLAnimatedImage *image = [[FLAnimatedImage alloc]initWithAnimatedGIFData:[NSData dataWithContentsOfURL:itemModel.coverUrl.wppURL]];
                    dispatch_async(dispatch_get_main_queue(), ^{
                       self.coverIV.animatedImage = image;
                    });
                });
                 */
上一篇 下一篇

猜你喜欢

热点阅读