如何在 React Native 中强制禁用 iOS 黑暗模式

How to force disable iOS dark mode in React Native

新的 iOS 13 更新引入了一个可选的系统范围。 这导致例如StatusBar 有浅色文本,在白色背景上可能变得不可读。它还会破坏 iOS 日期时间选择器(请参阅 DatePickerIOSreact-native-modal-datetime-picker)

解决方案是

  1. 将此添加到您的 Info.plist 文件中:
    <key>UIUserInterfaceStyle</key>
    <string>Light</string>

  1. 将此添加到您的 AppDelegate.m:
    if (@available(iOS 13.0, *)) {
        rootView.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
    }

在您的 app.json 文件中添加:

{
  "expo": {
     ...
     "ios": {
      "infoPlist": {
        "UIUserInterfaceStyle": "Light"
      }
    },
}

这个解决方案似乎效果最好。将此添加到您的 AppDelagate.m

  self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
  UIViewController *rootViewController = [UIViewController new];
  rootViewController.view = rootView;
  self.window.rootViewController = rootViewController;
  [self.window makeKeyAndVisible];

  //add this here vv

  if (@available(iOS 13, *)) {
     self.window.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
  }

  //add this here ^^




 return YES;

将此添加到您的 Info.plist

<key>UIUserInterfaceStyle</key>
    <string>Light</string>

这是给你的 AppDelegate.m

  rootView.backgroundColor = [UIColor whiteColor];

这对我有用

  1. 将此添加到 Info.plist
<key>UIUserInterfaceStyle</key>
<string>Light</string>
  1. 这是给你的 AppDelegate.m
  if (@available(iOS 13.0, *)) {
      rootView.backgroundColor = [UIColor systemBackgroundColor];
    self.window.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
  } else {
      rootView.backgroundColor = [UIColor whiteColor];
  }