2016-08-08 10 views
1

RCTRootViewをアプリケーションRootViewControllerにサブビューとして追加する方法を教えてください。RCTRootViewをReact-NativeのrootViewControllerにサブビューとして追加する

これは私が達成したいものです。私はビューにいくつかのOpenGLESコンテンツをレンダリングするiOSネイティブアプリを持っています。それは、デバイスカメラのフィードを表示し、ユーザーが直面しているトラックを表示します(スナップチャットARフィルタと同様)。これはすべて正常に動作し、ネイティブiOS UIKit要素もそこにあります。私は、このカメラのフィードの上にいくつかの反応したネイティブのUI要素(UIKitコンポーネントを削除する)をオーバーレイし、UI機能を実装したいと思います。

私はリアクションネイティブ(RCTRootView)の下にカメラのフィード(つまり:glビューを表示)したいと思います。ほとんどthis linkが好きです。私はほとんどそれをしましたが、いくつか迷惑なレイアウトの問題があります。この中にこの

... 
// rootViewController.view = rootView; 
[rootViewController.view addSubview:rootView]; 
... 

enter image description here

柔軟な幅と高さの結果でサブビューの結果として、それを追加しようとし

デフォルト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]; 

enter image description here

... 
// rootViewController.view = rootView; 
rootView.sizeFlexibility = RCTRootViewSizeFlexibilityWidthAndHeight; 
[rootViewController.view addSubview:rootView]; 
... 

enter image description here

多分レイアウトの問題であるように私には思えますか?しかし、私はこれについて間違ったやり方をしていますか?いかなる援助も歓迎されます。

p.s:これは、反応したネイティブのUI atmを持つARカメラのフィードビューで表示されます。 enter image description here

PPS:私はサブビューとしてRCTRootViewを追加しない場合、それは常にバックグラウンドになります(つまり、カメラフィードは、常に反応するネイティブUIビューの上部になります)

+0

setFrameを使用してRCTViewで手動でサイズを設定しようとしましたか? – while1

+0

うん。すべてのReactNativeビューのサイズは変更されません。フレックスボックスレイアウトが動作していないか、正しくセットアップされていなかったため、正しくリンクされていないようです。 – hdsenevi

答えて

1

私が持っていました同様の問題と、次の組み合わせは、私の好みに合わせて機能することが分かっ:

// Do *NOT* set reactView.sizeFlexibility 

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

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

警告:私はのIgniteの上で実行しているので、これはflexboxesで動作するかどうか全く分からないが。

関連する問題