如何在没有Nativescript中的操作栏的情况下在IOS中更改状态栏颜色?

时间:2019-08-19 10:41:00

标签: nativescript

如果没有ActionBar / NavigationBar的要求,我无法解决如何在本机脚本中更改IOS状态栏的问题。

我尝试过:

var navController = frame.topmost().ios.controller;
let navigationBar = navController.navigationBar;
navigationBar.barStyle = UIBarStyle.Black;

但是当没有ActionBar时,这完全失败!

2 个答案:

答案 0 :(得分:1)

此解决方案有效!

步骤1:

将以下内容添加到app/App_Resources/iOS/Info.plist

<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleLightContent</string>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

它将执行以下操作:

  1. 将初始屏幕和应用程序的默认颜色设置为白色。
  2. 允许您在应用程序中更改状态栏的颜色。

步骤2:

添加后,您可以使用下面的代码段更改状态栏样式的颜色:

// white status bar text
UIApplication.sharedApplication.setStatusBarStyleAnimated(UIStatusBarStyle.LightContent, true);
// black status bar text
UIApplication.sharedApplication.setStatusBarStyleAnimated(UIStatusBarStyle.Default, true);

可选但重要的步骤3:

如果您想在应用程序完成加载后(在启动屏幕之后)或当它变为活动状态时更改状态栏,则需要在UiApplicationDelegate函数内设置以上代码段。例如,请参见链接:

https://docs.nativescript.org/core-concepts/application-lifecycle#ios-uiapplicationdelegate

答案 1 :(得分:0)

@Jammer答案是正确的,我能够在Nativescript-Angular上使用此方法设置状态栏文本的颜色,重要的是要提及,您需要清除build / cache文件夹(tns platform remove ios)每次更新Info.plist来更新下一个版本的配置时,即使在NS7 +上,也会出现此小错误

注意:您还需要tns-platform-declarations以避免常见的打字稿错误。另外请记住,这仅适用于iOS,因此需要添加验证以避免Android上出现任何问题。