全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

IOS中Weex 加载 .xcassets 中的图片资源的实例详解

IOS中Weex 加载 .xcassets 中的图片资源的实例详解

前言:

因为 .xcassets 中的图片资源只能通过 imageNamed: 方法加载,所以需要做一些特殊处理,才能提供给 Weex 使用(PS:纯属娱乐,因为 Weex 跨平台的特性,这种针对某一端做实现的方案实用价值并不大)。

方案

观察 WeexSDK 发现有 WXImgLoaderProtocol 这个协议,这个协议包含了下面的方法:

- (id<WXImageOperationProtocol>)downloadImageWithURL:(NSString *)url imageFrame:
(CGRect)imageFrame userInfo:(NSDictionary *)options completed:(void(^)(UIImage *image, 
NSError *error, BOOL finished))completedBlock;

从名字就可以看出来,这个方法声明的功能就是通过指定的 URL 下载图片并返回一个 UIImage 对象。

下载过 WeexDemo 的人应该都知道里面有一个叫 WXImgLoaderDefaultImpl 的类(PS:别告诉我你对 Weex 感兴趣确连 WeexDemo 里面有啥都不知道)。这个类实现了 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);
  }
 }];
}

其实就是利用 SDWebImage 这个库实现图片下载功能。而且我还发现,如果不实现 WXImgLoaderProtocol 协议,就无法在 Weex 的代码中通过 URL 加载网络图片。也就是说 Weex 其实是依赖原生来做网络图片加载,至于为什么这么做,我只能说:我不知道。

然后 WeexDemo 通过下面的代码把 WXImgLoaderDefaultImpl 注册为 Weex 的一个 iOS 原生 handler

[WXSDKEngine registerHandler:[WXImgLoaderDefaultImpl new] withProtocol:@protocol(WXImgLoaderProtocol)];

这样我们就可以在 Weex 中加载网络图片了,比如:

<image class="img" style="width: 68px; height: 68px;margin-left:20px;" src="https://gw.alicdn.com/tps/TB1El.mKXXXXXXyapXXXXXXXXXX-34-34.gif"></image>

好了,现在就来说说怎么加载 .xcassets 中的图片资源,其实很简单,在 WXImgLoaderDefaultImpl 实现的方法中添加几行代码就可以:

if ([url hasPrefix:@"xcassets:"]) {
 UIImage *image = [UIImage imageNamed:[url substringFromIndex:9]];
 completedBlock(image, nil, YES);

 return [WXXCassetsLoaderOperation new];
}

这里我定义的规则是:xcassets:+[.xcassets 中的图片名]。所以我们判断 url 是不是以 xcassets: 开头,如果是,通过 imageNamed 方法加载图片并返回即可。

因为 downloadImageWithURL 方法要求返回遵循 WXImageOperationProtocol 协议的对象,所以我们新建一个 WXXCassetsLoaderOperation 类,然后实现 WXImageOperationProtocol 协议中的 cancel 方法:

- (void)cancel {
}

然后我们就可以在 Weex 中加载 .xcassets 中的图片了。代码如下:

<image class="img" style="width: 300px; height: 300px;" src="xcassets:reload"></image>

以上就是IOS中Weex 加载 .xcassets 中的图片资源的实例详解,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# IOS中Weex  # 加载  # .xcassets  # 中的图片资源  # IOS  # weex加载图片资源  # ios原生和react-native各种交互的示例代码  # iOS中Cell的Section展开和收起的示例代码  # 详解iOS 计步器的几种实现方式  # iOS发送短信功能的实现代码  # iOS app 右滑返回操作的两种方法  # iOS将地址解析成经纬度的方法  # 就可以  # 的人  # 我不  # 好了  # 我还  # 都不  # 告诉我  # 如有  # 感兴趣  # 希望能  # 你对  # 这么做  # 来做  # 就来  # 一个叫  # 谢谢大家  # 提供给  # 新建一个  # 其实很简单 


相关文章: 如何在橙子建站上传落地页?操作指南详解  相册网站制作软件,图片上的网址怎么复制?  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  广东专业制作网站有哪些,广东省能源集团有限公司官网?  三星网站视频制作教程下载,三星w23网页如何全屏?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  如何选择靠谱的建站公司加盟品牌?  c++怎么用jemalloc c++替换默认内存分配器【性能】  如何用搬瓦工VPS快速搭建个人网站?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  如何彻底删除建站之星生成的Banner?  微课制作网站有哪些,微课网怎么进?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  建站之星安装需要哪些步骤及注意事项?  深圳网站制作的公司有哪些,dido官方网站?  建站之星2.7模板:企业网站建设与h5定制设计专题  如何快速使用云服务器搭建个人网站?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  制作证书网站有哪些,全国城建培训中心证书查询官网?  ppt制作免费网站有哪些,ppt模板免费下载网站?  如何在服务器上配置二级域名建站?  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本  制作旅游网站html,怎样注册旅游网站?  清除minerd进程的简单方法  在线制作视频的网站有哪些,电脑如何制作视频短片?  官网建站费用明细查询_企业建站套餐价格及收费标准指南  金*站制作公司有哪些,金华教育集团官网?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  如何选择域名并搭建高效网站?  如何快速搭建高效WAP手机网站吸引移动用户?  安徽网站建设与外贸建站服务专业定制方案  如何基于PHP生成高效IDC网络公司建站源码?  存储型VPS适合搭建中小型网站吗?  如何在建站宝盒中设置产品搜索功能?  西安专业网站制作公司有哪些,陕西省建行官方网站?  如何破解联通资金短缺导致的基站建设难题?  学校免费自助建站系统:智能生成+拖拽设计+多端适配  如何注册花生壳免费域名并搭建个人网站?  建站为何优先选择香港服务器?  大型企业网站制作流程,做网站需要注册公司吗?  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  做企业网站制作流程,企业网站制作基本流程有哪些?  如何用wdcp快速搭建高效网站?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?  长沙企业网站制作哪家好,长沙水业集团官方网站?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  如何快速搭建响应式可视化网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。