使用PhoneGap Build的iOS7 StatusBar:设置背景颜色或文本颜色

时间:2014-06-06 19:35:21

标签: phonegap-build ios7-statusbar

我知道此问题的变体已被问过几十次,但我还没有找到解决这个问题的方法:我希望能够在iOS 7上看到一个非重叠的状态栏,使用Adobe和# 39; s Phonegap Build。

我已将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首选项以获得良好的衡量标准,它似乎没有任何区别。

plugin page提到PhoeGap构建不支持config.xml选项,所以我尝试使用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?

2 个答案:

答案 0 :(得分:2)

可能为时已晚......但我使用了您的确切代码,它适用于我的应用程序在phonegap构建。我改用了这个插件。

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

这将调用onDeviceReady函数:

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

答案 1 :(得分:0)

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

Google搜索&#34;手机广告设备未被解雇&#34;给我类似的错误报告,虽然他们都得到了神秘的解决,通常是通过重新安装或修复错字。

一个切线有用answer pointed out问题可能在于插件;特别是文件插件。我没有使用File插件,但我检查了模拟器的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.

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

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事件被触发并且状态栏颜色发生了变化!


所以,总结一下:你使用了什么插件,并尝试重新安装它们?