我目前正在尝试将我的React Native应用程序桥接到使用 具有Objective C标头的大型动态框架。我要引用的还有一个Objective C演示应用程序。
我知道我可以在Objective C中做到这一点,但是我想用Swift编写所有新代码,因为这是一个我希望可以维护的相当大的项目。是否可以使用Swift(仅)作为React Native的RCTViewManager的桥梁,以便我可以显示iOS原生视图?
当前,我必须为RCTViewManager创建一个实现类(.m),一个相应的标头(.h),一个桥接标头(.h),以及我想要的UIView的快速代码(.swift)进行自定义-所有这些都可以通过Swift中的RCTViewManager创建一个RCTView,可以由requireNativeComponent访问。由于我实际上需要数十个专用的本机RCTView,因此非常麻烦。
这是我尝试过的一些Swift代码:
class CustomViewZeroManager: RCTViewManager
{
override func view() -> UIView!
{
let player = LCOpenSDK_PlayWindow.init(playWindow: CGRect(x: 0, y: 0, width: 375, height: 211), index: 0)
player!.playRtspReal("", devID: "", psk: "", channel: 0, definition: 1)
return player!.getView()
}
}
在尝试这种方法时,我遇到了错误“在UIManager中找不到“违反常态:requireNativeComponent:“ CustomViewZero”。
我认为这是因为在Swift文件中不存在用于导出模块(RCT_EXPORT_MODULE)并执行自动名称解析的宏。我相信宏不是Swift的功能,那么有什么方法或示例可以用来桥接RCTView(通过RCTViewManager),或者编写不带Objective C和Swift的RCTBridgeModule吗?