应用程序在iOS 11上启动屏幕后闪烁白色



自从我将手机更新到 iOS 11 以来,我注意到我的 React Native 应用程序在启动屏幕和应用程序的第一个屏幕之间短暂(<0.5 秒)闪烁为白色。这一点特别明显,因为我的应用程序背景较深,启动屏幕较暗。

最初以为我可能忘记了某个地方的白色背景视图,但是当我创建一个全新的应用程序并将启动屏幕设置为红色并将默认应用程序的背景设置为红色时.js(欢迎来到 React native...)设置为红色,这也非常明显。

需要明确的是,这发生在打包的发布版本中。从远程打包程序加载时,我会接受调试版本中的一些滞后,但我之前在发布版本中没有这个问题。

还有其他人有这个烦人的问题吗?

好的,我想我发现了问题。在 AppDelegate.m 中,rootView 默认具有白色背景色,当我启动应用程序时,它会从:启动屏幕 -> rootView -> React Native 视图转换。

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

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

开始看到初始屏幕和根应用程序视图的显示之间出现白屏闪烁。 试试这个

将启动屏幕设置为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

最新更新