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

Posted

技术标签:

【中文标题】如何在 React Native 中强制禁用 iOS 暗模式【英文标题】:How to force disable iOS dark mode in React Native 【发布时间】:2020-02-12 05:00:30 【问题描述】:

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

【问题讨论】:

【参考方案1】:

解决办法是

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

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

【讨论】:

@Hazwin 听起来不太可能 @MaximZubarev 我猜他指的是***.com/a/56546554/827027 @Hazwin 如果您使用的是 Xcode 的更新版本,则情况并非如此,并且对于阅读 cmets 的人可能会产生很大的误导。我在应用商店中有多个应用使用 Info.plist 中的 UIUserInterfaceStyle 灯光 @Jero 是的。我的错。我指的是***.com/questions/56537855/… 非常好,它工作得很好......谢谢你的回答......你拯救了我的一天......【参考方案2】:

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


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

【讨论】:

【参考方案3】:

这个解决方案似乎效果最好。将此添加到您的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;

【讨论】:

【参考方案4】:

将此添加到您的 Info.plist 中

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

这是你的 AppDelegate.m

  rootView.backgroundColor = [UIColor whiteColor];

【讨论】:

以上是关于如何在 React Native 中强制禁用 iOS 暗模式的主要内容,如果未能解决你的问题,请参考以下文章

如何在WebView中禁用用户文本选择[React-Native]

如何在 WebView [React-Native] 中禁用用户文本选择

如何在 react-native 中禁用默认启动画面?

如何在调试模式下,在 react-native-firebase 中禁用 Crashlytics?

如何禁用屏幕旋转(react-native)?

在React Native iOS中是否可以有条件地禁用滑动以返回手势?