第一步:在項目中即成SDWebImage庫
pod 'SDWebImage','4.4.2'
第二步:在初始化WXSDKEngine時注冊圖片庫
[WXSDKEngine registerHandler:[WXImgLoaderDefaultImpl new] withProtocol:@protocol(WXImgLoaderProtocol)];
第三步:實現(xiàn)WXImgLoaderDefaultImpl類
WXImgLoaderDefaultImpl.h文件
#import <Foundation/Foundation.h>
#import <WeexSDK/WeexSDK.h>
@interface WXImgLoaderDefaultImpl : NSObject<WXImgLoaderProtocol, WXModuleProtocol>
@end
#import "WXImgLoaderDefaultImpl.h"
#import <SDWebImage/UIImageView+WebCache.h>
#import <SDWebImage/UIImage+GIF.h>
WXImgLoaderDefaultImpl.m文件
@implementation WXImgLoaderDefaultImpl
- (id<WXImageOperationProtocol>)downloadImageWithURL:(NSString *)url imageFrame:(CGRect)imageFrame userInfo:(NSDictionary *)userInfo completed:(void(^)(UIImage *image, NSError *error, BOOL finished))completedBlock
{
return (id<WXImageOperationProtocol>)[[SDWebImageManager sharedManager].imageDownloader downloadImageWithURL:[NSURL URLWithString:url] options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize, NSURL * _Nullable targetURL) {
} completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, BOOL finished) {
if (completedBlock) {
// 關(guān)鍵點
if ([url hasSuffix:@"gif"]) {
UIImage *images = [UIImage sd_animatedGIFWithData:data];
completedBlock(images, error, finished);
}else{
completedBlock(image, error, finished);
}
}
}];
}