アプリの RootViewController に RCTRootView をサブビューとして追加するにはどうすればよいですか。
これが私が達成したいことです。一部の OpenGLES コンテンツをビューにレンダリングする iOS ネイティブ アプリがあります。これは、デバイスのカメラ フィードを表示し、ユーザーの顔を追跡し、その上にいくつかの視覚化を表示します (スナップチャットの AR フィルターによく似ています)。これはすべて正常に機能し、そこにはネイティブの iOS UIKit 要素もあります。このカメラ フィードの上にいくつかの反応ネイティブ UI 要素 (UIKit コンポーネントを削除) をオーバーレイし、UI 機能を実装したいと考えています。
だから私は反応ネイティブ(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 をサブビューとして追加しないと、常にバックグラウンドになります (つまり、カメラ フィードは常に反応ネイティブ UI ビューの上に表示されます)。