如何将 RCTRootView 作为子视图添加到应用程序 RootViewController。
这就是我想要实现的。我有一个 iOS 本机应用程序,可以将一些 OpenGLES 内容呈现到视图上。它显示设备摄像头馈送并跟踪用户面部并在其上显示一些可视化(很像 snapchat AR 过滤器)。这一切都很好,我也有原生的 iOS UIKit 元素。我想在这个摄像头提要上覆盖一些 react-native UI 元素(删除 UIKit 组件)并实现 UI 功能。
所以我想在 react-native (RCTRootView) 下面有相机馈送(即:打开 gl 视图)。大多喜欢这个链接。我几乎做到了,但有一些烦人的布局问题。
默认 AppDelegate.m 实现
NSURL *jsCodeLocation;
jsCodeLocation = [[RCTBundleURLProvider sharedSettings]
jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];
RCTRootView *rootView = [[RCTRootView alloc]
initWithBundleURL:jsCodeLocation moduleName:@"AwesomeProject" initialProperties:nil launchOptions:launchOptions];
rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
UIViewController *rootViewController = [UIViewController new];
rootViewController.view = rootView;
self.window.rootViewController = rootViewController;
[self.window makeKeyAndVisible];
尝试将其添加为子视图会导致此
...
// rootViewController.view = rootView;
[rootViewController.view addSubview:rootView];
...
灵活的宽度和高度导致了这个
...
// rootViewController.view = rootView;
rootView.sizeFlexibility = RCTRootViewSizeFlexibilityWidthAndHeight;
[rootViewController.view addSubview:rootView];
...
在我看来,这可能是布局问题?但我会以错误的方式解决这个问题吗?欢迎任何帮助。
ps:这就是带有 react-native UI atm 的 AR 相机馈送视图的样子。
pps:如果我不将 RCTRootView 添加为子视图,那么它将始终在后台(即摄像头馈送将始终位于 react-native UI 视图的顶部)