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;
});
});
*/
网友评论