1

アプリの 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 ビューの上に表示されます)。

4

1 に答える 1

1

同様の問題があり、次の組み合わせが私の好みに合っていることがわかりました。

// Do *NOT* set reactView.sizeFlexibility

reactView.bounds = [[UIScreen mainScreen]bounds]];

reactView.layer.anchorPoint = CGPointMake( 0, 0 );

警告: Ignite の上で実行しているため、これがフレックスボックスで機能するかどうかはわかりません。

于 2016-08-14T01:20:54.950 に答える