weex加載圖片,在weex的官方文檔中已經說明,文檔:http://weex.apache.org/cn/guide/extend-ios.htmlhtml
文檔中說明weexSDK 沒有圖片下載的能力,須要實現 WXImgLoaderProtocol,須要集成第三方SDWebImage。ios
在項目中建立一個WXImgLoaderDefaultImpl類,WXImgLoaderDefaultImpl.h和.m文件以下所示:apache
WXImgLoaderDefaultImpl.hweex
#import <Foundation/Foundation.h> #import <WeexSDK/WXImgLoaderProtocol.h> @interface WXImgLoaderDefaultImpl : NSObject<WXImgLoaderProtocol, WXModuleProtocol> @end
WXImgLoaderDefaultImpl.mide
#import "WXImgLoaderDefaultImpl.h" #import "UIImageView+WebCache.h" #define MIN_IMAGE_WIDTH 36 #define MIN_IMAGE_HEIGHT 36 #if OS_OBJECT_USE_OBJC #undef WXDispatchQueueRelease #undef WXDispatchQueueSetterSementics #define WXDispatchQueueRelease(q) #define WXDispatchQueueSetterSementics strong #else #undef WXDispatchQueueRelease #undef WXDispatchQueueSetterSementics #define WXDispatchQueueRelease(q) (dispatch_release(q)) #define WXDispatchQueueSetterSementics assign #endif @interface WXImgLoaderDefaultImpl() @property (WXDispatchQueueSetterSementics, nonatomic) dispatch_queue_t ioQueue; @end @implementation WXImgLoaderDefaultImpl #pragma mark - #pragma mark WXImgLoaderProtocol - (id<WXImageOperationProtocol>)downloadImageWithURL:(NSString *)url imageFrame:(CGRect)imageFrame userInfo:(NSDictionary *)userInfo completed:(void(^)(UIImage *image, NSError *error, BOOL finished))completedBlock { if ([url hasPrefix:@"//"]) { url = [@"http:" stringByAppendingString:url]; } return (id<WXImageOperationProtocol>)[[SDWebImageManager sharedManager] downloadImageWithURL:[NSURL URLWithString:url] options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize) { } completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) { if (completedBlock) { completedBlock(image, error, finished); } }]; }
在初始化weexSDK的時候註冊便可:動畫
[WXSDKEngine registerHandler:[WXImgLoaderDefaultImpl new] withProtocol:@protocol(WXImgLoaderProtocol)];ui
以上在weex的playground中都有。atom
下面是加載本地gif圖片顯示緩慢的問題,具體狀況:加載js界面,在js界面下拉刷新時須要加載本地的gif圖片,出現動畫效果,可是當更新完數據的時候gif尚未加載出來,等時間長一點的時候再下拉刷新的時候gif就正常顯示了。url
這種狀況的解決辦法:spa
在加載js界面的同時加載本地的gif圖片,若是本地圖片過多的話不建議使用此方法。
在加載js的ViewController中,導入
#import "UIImageView+WebCache.h"
在viewDidLoad方法中加載圖片(不必定在此方法中)
這樣在下拉刷新以前,gif圖片已經加載。下拉刷新的時候圖片就會正常顯示。