week-iOS的擴充套件之內建模組,將原生模組做成標籤在weex中使用
阿新 • • 發佈:2019-01-10
在自定義module這篇部落格中,部落格解析瞭如何自定義module來和weex的js做互動,當時有提到定義原生模組為標籤,地址和Demo請點選上方連結檢視,這篇部落格,博主將詳細解釋如果把weex中不支援的模組在weex中嵌入。
在iOS中:
1.建立一個繼承於WXComponent的類,這個和官方的說法沒什麼差別。
2.需要實現兩個方法
官方說明中需要實現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)];
詳情可以檢視這篇部落格