在 iOS 中 React Native 更改状态栏文本颜色

Posted

技术标签:

【中文标题】在 iOS 中 React Native 更改状态栏文本颜色【英文标题】:React Native change status bar text color in iOS 【发布时间】:2019-03-10 15:33:39 【问题描述】:

我正在使用 React Native 开发应用程序,我被要求将状态栏的文本颜色设置为白色。

我使用了带有属性 barStyle="light-content" 的 StatusBar 组件,它在 android 上运行良好,但在 ios 上却不行,文本颜色仍然是黑色。

我对此进行了一些研究,但找不到任何有用的信息。我什至尝试在 XCode like the following picture shows 上选择 Light Status bar 样式,但它仍然不起作用

【问题讨论】:

试试这个可能对你有帮助:github.com/RNRF/react-native-router-flux/issues/2882 @Kuldeep 我在写这篇文章之前已经检查了那个链接,它并没有真正帮助我,我现在正在尝试很多东西,但我仍然卡住了 @Fabrizio 你应该将你的解决方案写成答案并接受它,这样其他人就可以很容易地看到这个问题的解决方案(回答你自己的问题感觉很奇怪,但这是 Stack Overflow 上的常见做法)。 @MateiRadu 注意到了! 【参考方案1】:

我解决了这个问题! 我在索引页面中使用此代码并将文本颜色设置为白色:

<StatusBar  barStyle="light-content" translucent=true />

【讨论】:

【参考方案2】:

尝试将此代码放入 AppDelegate 文件中的 didFinishLaunchingWithOptions 中。

UIApplication.shared.statusBarStyle = .lightContent

目标c

 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

并在您的 info.plist 文件中将 UIViewControllerBasedStatusBarAppearance 设置为 NO

【讨论】:

我试过你的代码,但是当我在 React Native 中开发时,AppDelegate 文件是用 Objective C 编写的,我试图找到用 Objective C 编写的类似代码行,但我真的很挣扎有了它,到目前为止它还没有工作 在 Objective C 中 setStatusBarStyle 已被弃用,我仍然尝试了那行代码,但状态栏的文本颜色仍然是黑色,我认为 React Native 正在接管该代码,遗憾的是我没有不知道该怎么办。我也忘了在我的第一篇文章中提到,只有一个文本颜色为白色的视图,一旦我转到另一个视图,它就会切换到黑色,当我回到“白色文本颜色视图”时,它不再是白色了但是黑色,真的很混乱。【参考方案3】:

我的问题解决了!

问题来自一个名为 React Native Navbar 的 React Native 库,它也控制了状态栏,我必须在该组件中设置“light-content”属性。

【讨论】:

【参考方案4】:

【讨论】:

以上是关于在 iOS 中 React Native 更改状态栏文本颜色的主要内容,如果未能解决你的问题,请参考以下文章

React-Native iOS 状态栏

为啥组件在状态更改后不重新渲染。在 react-native 函数组件中

在 react-native 中显示/隐藏状态更改的组件时出错

React Native刷新屏幕/组件/更改状态

如何在 react-native 中更改应用程序的显示名称

React Native:状态更改后无法重新渲染图像