【问题标题】:Cordova iOS white bar at top顶部的 Cordova iOS 白条
【发布时间】:2016-04-26 06:18:00
【问题描述】:

将 StatusBarOverlaysWebview 添加到 config.xml 后,我在屏幕顶部看到一个白条,并且所有内容都被向下推(见屏幕截图 - 状态栏顶部有一个白条)。因此,它不只是将状态栏高度(20px)添加到屏幕上,而是增加了 40px。

我仔细检查了所有样式,一切看起来都很好,所以我猜它是由插件引起的。谁能告诉我如何解决这个问题?

这是我的配置:

<preference name="StatusBarOverlaysWebview" value="false" />
<preference name="StatusBarBackgroundColor" value="#FF543E" />
<preference name="fullscreen" value="true" />

这是没有设置颜色和使用 window.StatusBar.overlaysWebView(false);而不是 config.xml

【问题讨论】:

  • 问题解决了吗?

标签: ios cordova webview


【解决方案1】:

试试这个,下面的代码对我有用:

<preference name="StatusBarOverlaysWebView" value="false" />
<preference name="StatusBarBackgroundColor" value="#2D81C1" />
<preference name="Fullscreen" value="false" />

如果您仍然有问题,并且在以前的版本中相同的代码为您工作,请检查插件是否已安装并正常工作

更新:对于 iOS 11 和 iPhone X,库和 HTML 元标记有一些变化

在 index.html 中将元标记更改为:

<meta name="viewport" content="viewport-fit=cover, width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">

请同时更新 ionic-angular 库以获得最新设备支持

更多信息在这里:iOS 11 ionic checklist

【讨论】:

  • 我在安装状态栏插件的情况下尝试了这个,它没有解决白条问题。我仍然在我的应用上方的状态栏下方看到一个白条。
  • @SteveW 我已经更新了最新版本的代码
【解决方案2】:

这似乎是 Cordova 处理 iOS 11 状态栏的方式的一个错误。作为修复,您可以将

    <meta name="viewport" content="viewport-fit=cover">

在您的 index.html 中。

【讨论】:

【解决方案3】:

这个东西在我的应用中使用状态栏插件为我工作。

Try with below code.

 <preference name="StatusBarOverlaysWebView" value="false" />
 <preference name="StatusBarStyle" value="lightcontent" />
 <preference name="StatusBarBackgroundColor" value="#FF543E" />

【讨论】:

  • 是的,几天前它也对我有用。 StatusBarStyle 没有改变任何东西:/ 当应用程序启动时状态栏看起来很好,但随后立即被推下
  • @user3740962 那么现在显示代码中定义的颜色是什么?而不是白条。
  • StatusBarBackgroundColor 中定义的颜色显示正常,但最上面是一个白条。所以它就像整个屏幕被推下20px
  • @user3740962 当您从顶部点击并向下滚动屏幕时会发生这种情况吗?你能发布更新的屏幕截图吗?
  • 它发生在启动应用程序的过程中,没有任何交互。我发布了一个新的截图
【解决方案4】:

试试这个:

config.xml 为状态栏添加以下内容:

<preference name="StatusBarBackgroundColor" value="#FFFFFF" />

app.run.js

if (window.StatusBar) {
  // cordova plugin org.apache.cordova.statusbar is used
  window.StatusBar.styleLightContent();
}

【讨论】:

  • 当我不设置 overlaysWebView 时一切正常,但在 app.run 中设置 overlaysWebView(false) 会得到相同的结果
  • 我不确定你在这里的意思是什么?我指定的解决方案是否有效?
  • 如果我将 overlaysWebView(false) 放在 app.run 或 config.xml 中没有区别 - 我仍然在视图顶部获得“双”间距。 (检查屏幕截图)。不过谢谢你的建议
  • 但我使用的是styleLightContent() 而不是overlaysWebView(false)。你在哪里看到overlaysWebView()
  • 我的问题是关于将 overlaysWebView 设置为 false - styleLightContent 应该只更改状态栏的文本颜色,与此无关..(我试过了,只是为了舒尔)。设置颜色没有问题。正如您在屏幕截图中看到的 - 第一个我设置了颜色,第二个我没有设置任何颜色。在它们上面都有一个额外的 20 像素
【解决方案5】:

我认为您使用 OnsenUI 会是问题所在...不是状态栏插件。试试 ons.disableAutoStatusBarFill();解决问题;)

【讨论】:

  • 原发帖人在哪里表明他们使用了 OnsenUI?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-26
  • 2015-01-31
  • 1970-01-01
  • 1970-01-01
  • 2015-10-17
  • 2023-03-30
  • 1970-01-01
相关资源
最近更新 更多