我知道这个问题已经被问过很多次了,但我还没有找到一个能解决这个组合的问题:我想用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
事件被触发,状态栏颜色改变!
所以,总结一下:你用过哪些插件,你试过重新安装它们吗?