iOS 集成weexSDK,js加載本地gif圖片顯示緩慢的問題。

 

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圖片已經加載。下拉刷新的時候圖片就會正常顯示。

相關文章
相關標籤/搜索