【问题标题】:iOS7 StatusBar using PhoneGap Build: set background color or text coloriOS7 StatusBar 使用PhoneGap Build:设置背景颜色或文本颜色
【发布时间】:2014-06-06 19:35:20
【问题描述】:

我知道这个问题的变体已经被问了几十次,但我还没有找到一个解决这个组合的问题:我希望能够使用 Adob​​e 的 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 首选项,以作为很好的衡量标准,它似乎没有任何区别。

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?

【问题讨论】:

    标签: phonegap-build ios7-statusbar


    【解决方案1】:

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

    &lt;gap:plugin name="org.apache.cordova.statusbar" version="0.1.4" /&gt;

    这个调用onDeviceReady函数:

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

    【讨论】:

    • 谢谢,引用正确的插件(org.apache.cordova 而不是 com.phonegap)为我解决了这个问题。
    • 我没有遇到与 OP 相同的问题——我的问题在于 Ionic + Phonegap Build 并且根本无法控制状态栏。在我切换到 Cordova 状态栏插件而不是 Phonegap 插件后,一切都开始工作了。这正是我需要的小费——谢谢!
    【解决方案2】:

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

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

    一个切线有用的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.
    

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

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


    所以,总结一下:您使用了哪些插件,您是否尝试过重新安装它们?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-29
      • 2018-09-03
      • 2011-02-11
      • 1970-01-01
      • 2022-01-22
      • 2021-12-03
      • 2013-10-10
      • 2017-03-26
      相关资源
      最近更新 更多