我是否要创建本机模块或本机UI组件?

时间:2016-04-10 18:32:31

标签: ios reactjs react-native

我有一个Swift类,它主要用作React Native模块。该模块使用一个看不见的WKWebView来运行,偶尔我会在我的ViewController中将WKWebView指定为子视图来调试我的实现,如下所示:

swiftClass.webView.frame = self.view.frame
self.view.addSubview(swiftClass.webView)

将此功能桥接到React Native的最简单方法是什么?我好像坐在模块和UI组件之间。如果我将其作为UI组件编写,我该如何调用该类的方法?如果我将其作为模块编写,如何将其添加到视图层次结构中?

我应该只使用WebView在React Native中重写模块吗?我很犹豫,因为RN实现使用了比WKWebView慢的UIWebView,我不想污染JS线程并且可能导致任何减速。

1 个答案:

答案 0 :(得分:0)

我最终创建了一个桥接模块并添加了这些功能:

  @objc func showView() {
    dispatch_async(dispatch_get_main_queue(),{
      let rootVC = UIApplication.sharedApplication().delegate!.window!!.rootViewController!
      self.webView.frame = rootVC.view.frame
      rootVC.view.addSubview(self.webView)
    })

  }

  @objc func hideView() {
    dispatch_async(dispatch_get_main_queue(),{
      self.webView.removeFromSuperview()
    })

  }

因为我只是在调试情况下调用它们,所以这已经足够了。我可能会重写它们最终使用RN的WebView,但现在不需要重新发明轮子。