应用程序在iOS 11上的启动画面后闪烁白色?

时间:2017-10-08 22:50:05

标签: react-native

自从我将手机更新到iOS 11后,我注意到我的React Native应用程序短暂(<0.5s)在启动屏幕和应用程序的第一个屏幕之间闪烁为白色。这是非常明显的,因为我的应用程序有深色背景和黑暗的启动屏幕。

我首先想到我可能忘记了某处有白色背景的视图,但是当我创建了一个全新的应用程序并将启动屏幕设置为红色和默认App.js的背景时(欢迎使用React native ...对于红色,这也非常明显。

为了清楚起见,打包发布版本正在发生这种情况。从远程打包器加载时,我会接受调试版本中的一些延迟,但我之前没有发布版本的问题。

其他人有这个恼人的问题吗?

2 个答案:

答案 0 :(得分:4)

好的,我想我发现了这个问题。在AppDelegate.m中,rootView默认使用白色背景颜色,当我启动应用程序时,它从以下位置转换:启动屏幕 - &gt; rootView - &gt;反应本机视图。

在iOS 10上我从未见过rootView flash,但是在iOS 11上加载RN视图之前似乎有一个短暂的延迟。我不确定为什么会在iOS 11而不是10上发生这种情况,但你可以通过以下方式解决这个问题:

  1. 在rootView上设置背景颜色以匹配启动屏幕。
  2. 将启动屏幕设置为rootView的背景。以下是指南:https://peterminarik.tumblr.com/post/153039209421/how-to-fix-the-initial-white-flash-in-your-react

答案 1 :(得分:0)

您可能会开始在初始屏幕和根应用程序视图的显示之间看到白屏闪烁。试试这个

将启动屏幕设置为RCTRootView加载视图

AppDelegate.m

// Place this code after "[self.window makeKeyAndVisible]" and before "return YES;"
UIView* launchScreenView = [[[NSBundle mainBundle] loadNibNamed:@"LaunchScreen" owner:self options:nil] objectAtIndex:0];
launchScreenView.frame = self.window.bounds;
rootView.loadingView = launchScreenView;

更多信息

https://facebook.github.io/react-native/docs/running-on-device#pro-tip