如何从 Cordova 插件添加本机视图

Posted

技术标签:

【中文标题】如何从 Cordova 插件添加本机视图【英文标题】:How can I add a native view from a Cordova plugin 【发布时间】:2014-02-13 22:43:31 【问题描述】:

我正在使用最新版本的 Cordova (3.3) 开发插件。我需要在 Cordova 视图中添加原生 UIImageView

如果我可以访问例如平台文件夹中的项目,我可以将我的视图添加到属于CDVViewController 的视图实例。但是,我不确定如何从插件访问该引用。

在我的插件里面我有:

@interface CDVCool : CDVPlugin

@property (weak, nonatomic) UIImageView *nativeImageView;
...
@end

我怎样才能通过只修改插件文件来初始化和渲染这个视图?

【问题讨论】:

【参考方案1】:

此答案的功劳归于 devgeeks,他向我指出了他的几个插件,MapKit 和 VolumeSlider,它们将原生元素与科尔多瓦 Web 视图混合在一起。

关键是覆盖initWithWebView方法:

-(CDVPlugin*) initWithWebView:(UIWebView*)theWebView

    self = (VolumeSlider*)[super initWithWebView:theWebView];
    return self;

现在,在插件中,您可以获得对 cordova web 视图背后的视图控制器的引用,并添加任何您想要的内容。

[self.webView.superview addSubview:mpCustomView];

这很酷,因为您可以控制您添加的任何视图相对于 webView 的 zPosition。因此,您可以将视图放在 Web 视图的上方或下方。

【讨论】:

注意:在较新版本的 Cordova 中,这需要在 - (void)pluginInitialize 中完成

以上是关于如何从 Cordova 插件添加本机视图的主要内容,如果未能解决你的问题,请参考以下文章

添加新插件后,cordova_plugins.js 未更新

如何使用 ionic/cordova 打开本机添加联系人界面

在本机 IOS 应用程序中加载多个 Cordova 微应用程序

Apache Cordova 无法加载插件

Cordova 控制台插件 console.log

Cordova 插件从本机函数获取异步响应