如何在 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] 中禁用用户文本选择