week-iOS的扩展之内置模块,将原生模块做成标签在weex中使用

简介: week-iOS的扩展之内置模块,将原生模块做成标签在weex中使用

在自定义module这篇博客中,博客解析了如何自定义module来和weex的js做交互,当时有提到定义原生模块为标签,地址和Demo请点击上方链接查看,这篇博客,博主将详细解释如果把weex中不支持的模块在weex中嵌入。


在iOS中:


1.创建一个继承于WXComponent的类,这个和官方的说法没什么差别。

1.png

2.需要实现两个方法

1.png

官方说明中需要实现loadView方法来覆盖父类方法,因为一个 component 默认对应于一个 view,如果未覆盖 loadView 提供自定义 view, 会使用 WXComponent 基类中的 WXView, WXView 是继承自 UIView 的一个派生 view。


说的比较拗口,简而言之,看你自己的心情,不覆盖的话你就通过addSubView的方式来添加view即可,或者直接用你写好的模块覆盖loadView,比如:

- (UIView *)loadView
{
    return [MyView new];
}

这样你只需要让myview=self.view就可以了,两者差别不大,只是实例的view不一样,没什么影响。


3.做完这些,你就可以到appdelegate中来注册你这个自定义的模块了

[WXSDKEngine registerComponent:@"slfview" withClass:[MyComponent class]];
//注意一点,这里是registerComponent,博主已开始不小心弄成了module,结果怎么都显示不出来。

4.完成以上操作,你就可以在weex中直接使用

<slfview></slfview>
//这就是我们刚刚注册成功的标签,直接使用,还可以根据需要添加css样式

注:在这之前一定要先注册module

    [WXAppConfiguration setAppGroup:@"AliApp"];
    [WXAppConfiguration setAppName:@"WeexDemo"];
    [WXAppConfiguration setAppVersion:@"1.8.3"];
    [WXAppConfiguration setExternalUserAgent:@"ExternalUA"];
    [WXSDKEngine initSDKEnvironment];
    //这是上面注册模块的代码
    [WXSDKEngine registerComponent:@"slfview" withClass:[MyComponent class]];
    [WXSDKEngine registerModule:@"WXEventModule" withClass:NSClassFromString(@"WXEventModule")];
    [WXSDKEngine registerHandler:[WXImgLoaderDefaultImpl new] withProtocol:@protocol(WXImgLoaderProtocol)];

详情可以查看这篇博客

目录
相关文章
|
iOS开发
Flutter与iOS原生通信方式
Flutter与iOS原生通信方式
473 2
|
JSON JavaScript 前端开发
iOS小技能: 开发 uni-app 原生插件(支持iOS Extension)
术语:uni原生插件指的是将`原生开发的功能按照规范封装成插件包`,然后即可在 uni-app 前端项目中通过js调用原生能力。
1118 0
iOS小技能: 开发 uni-app 原生插件(支持iOS Extension)
|
Web App开发 iOS开发 Windows
ios获取原生系统应用的包名
ios获取原生系统应用的包名
2400 0
|
6月前
|
存储 Android开发 iOS开发
iOS不支持HEIC格式的图片显示和标签函数显示问题及解决方案
iOS不支持HEIC格式的图片显示和标签函数显示问题及解决方案
189 0
|
6月前
|
iOS开发
iOS中如何显示后台返回的带有html标签的富文本字符串
iOS中如何显示后台返回的带有html标签的富文本字符串
61 0
|
缓存 中间件 Swift
优酷iOS工程插件化 -- 大量模块壳工程本地如何快速编译
业务快速发展,优酷工程已有大量模块,模块耦合严重且混乱,模块依赖是一颗“树”,甚至于一张“网” ,导致开发体验持续严重下降,如何解决本地调试效率低、不支持模拟器、模块整包依赖不一致等等痛点问题,文中进行了说明。
54030 6
|
6月前
|
存储 移动开发 JavaScript
【原生】sd.js帮助您简化繁重的获取数据、存储数据(CRUD)骚操作(吐槽~在安卓9.0以下或者IOS10.X以下手机端H5页面不支持,在这两种情况下的系统只能使用ajax或者原生js请求后台数据)
【原生】sd.js帮助您简化繁重的获取数据、存储数据(CRUD)骚操作(吐槽~在安卓9.0以下或者IOS10.X以下手机端H5页面不支持,在这两种情况下的系统只能使用ajax或者原生js请求后台数据)
|
Dart 开发工具 Android开发
Flutter与iOS原生混合开发
Flutter与iOS原生混合开发
440 2
|
iOS开发 芯片 MacOS
macOS Big Sur 正式发布并已开放下载,支持原生运行 iOS 和 iPadOS App
macOS Big Sur 正式发布并已开放下载,支持原生运行 iOS 和 iPadOS App
216 0
|
JSON JavaScript 前端开发
iOS小技能: 开发 uni 原生插件(支持iOS Extension)
背景:app采用uni实现 需求: iOS App前台后台离线(杀死情况下)推送语音播报(到账xx元、收款播报、自定义推送铃)。 实现方式:uni-app 原生插件(支持iOS Extension)
471 0
iOS小技能: 开发 uni 原生插件(支持iOS Extension)
下一篇
无影云桌面