• iOS 集成weexSDK,js加载本地gif图片显示缓慢的问题。


     

    weex加载图片,在weex的官方文档中已经说明,文档:http://weex.apache.org/cn/guide/extend-ios.html

    文档中说明weexSDK 没有图片下载的能力,需要实现 WXImgLoaderProtocol,需要集成第三方SDWebImage。

    在项目中创建一个WXImgLoaderDefaultImpl类,WXImgLoaderDefaultImpl.h和.m文件如下所示:

    WXImgLoaderDefaultImpl.h

    #import <Foundation/Foundation.h>
    #import <WeexSDK/WXImgLoaderProtocol.h>
    
    @interface WXImgLoaderDefaultImpl : NSObject<WXImgLoaderProtocol, WXModuleProtocol>
    @end

    WXImgLoaderDefaultImpl.m

    #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)];

    以上在weex的playground中都有。

    下面是加载本地gif图片显示缓慢的问题,具体情况:加载js界面,在js界面下拉刷新时需要加载本地的gif图片,出现动画效果,但是当更新完数据的时候gif还没有加载出来,等时间长一点的时候再下拉刷新的时候gif就正常显示了。

    这种情况的解决办法:

    在加载js界面的同时加载本地的gif图片,如果本地图片过多的话不建议使用此方法。

    在加载js的ViewController中,导入

    #import "UIImageView+WebCache.h"

    在viewDidLoad方法中加载图片(不一定在此方法中)

    这样在下拉刷新之前,gif图片已经加载。下拉刷新的时候图片就会正常显示。

     

  • 相关阅读:
    (转)十分钟搞定CSS选择器
    (转)我所理解的OOP——UML六种关系
    闲话:你今天OO了吗?
    oledb方式读取excel文件
    (转)asp.net 高质量缩略图
    (转载)重温SQL——行转列,列转行
    第九讲,资源表解析
    第八讲,TLS表(线程局部存储)
    第七讲,重定位表
    第六讲,导出表
  • 原文地址:https://www.cnblogs.com/lulushen/p/8426554.html
Copyright © 2020-2023  润新知