iOS7状态栏使用PhoneGap构建:设置背景颜色或文本颜色



我知道这个问题已经被问过很多次了,但我还没有找到一个能解决这个组合的问题:我想用Adobe的Phonegap Build在iOS 7上看到一个不重叠的状态栏。

我已经添加了PhoneGap状态栏插件到我的config.xml:

<gap:plugin name="com.phonegap.plugin.statusbar" version="1.1.0" />
<feature name="StatusBar">
  <param name="ios-package" value="CDVStatusBar" onload="true" />
</feature>

这会导致一个黑色的状态栏正确显示,而不重叠我的网站,但文本(大概)是黑色的,因为我看不见它。

我已经从config.xml中删除了ios-statusbarstyle首选项,因为它似乎没有任何区别。

插件页面提到config.xml选项不支持PhoeGap构建,所以我尝试使用StatusBar javascript对象。这是我完整的index.html文件:

<!DOCTYPE html>
<html>
  <head>
    <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
    <script type="text/javascript" charset="utf-8">
      function onLoad() {
          document.addEventListener("deviceready", onDeviceReady, false);
      }
      function onDeviceReady() {
        StatusBar.show();
        StatusBar.overlaysWebView(false);
        StatusBar.backgroundColorByHexString("#C8DB2F");
      }
    </script>
  </head>
  <body onload="onLoad()">
    Test.
  </body>
</html>

但是backgroundColorByHexString()函数什么也不做,事实上,似乎根本没有StatusBar对象——这是通过使用PhoneGap Build的调试窗口来确认的,因为我试图在这些行之后放置的任何JS都不会被执行,所以可能会抛出一个错误。

关于如何设置状态栏背景颜色或文本颜色的任何想法?我必须使用CLI而不是PhoneGapBuild吗?

可能太晚了…但我用了你的代码,它对我的应用程序在phonegap构建工作。我用这个插件代替。

<gap:plugin name="org.apache.cordova.statusbar" version="0.1.4" />

和这个调用onDeviceReady函数:

// wait for phonegap to be ready
document.addEventListener('deviceready', onDeviceReady, false);

我注意到JS在使用PhoneGap Developer App测试时工作,但不使用iOS模拟器(即从命令行运行cordova emulate ios时)。进一步测试,似乎deviceready事件在iOS模拟器中根本不触发。

谷歌搜索"phonegap deviceready not fired"也会给我类似的错误报告,尽管它们都得到了神秘的解决,通常是通过重新安装或修复拼写错误。

一个有用的答案指出问题可能出在插件上;特别是文件插件。我没有使用文件插件,但我检查了模拟器的system.log,这给了我一些与插件有关的错误:

Sep 12 10:26:58 username.local MyApp[8218] <Warning>: ERROR: Plugin 'StatusBar' not found, or is not a CDVPlugin. Check your plugin mapping in config.xml.
[…]
Sep 12 10:26:58 username.local MyApp[8218] <Warning>: ERROR: Plugin 'Device' not found, or is not a CDVPlugin. Check your plugin mapping in config.xml.

所以我删除了所有项目的插件,然后重新添加它们。我检查了重新安装之前和之后的版本,虽然版本相同:

org.apache.cordova.console 0.2.10 "Console"
org.apache.cordova.device 0.2.11 "Device"
org.apache.cordova.geolocation 0.3.9 "Geolocation"
org.apache.cordova.statusbar 0.1.7 "StatusBar"

再次运行模拟器,deviceready事件被触发,状态栏颜色改变!


所以,总结一下:你用过哪些插件,你试过重新安装它们吗?

最新更新