【问题标题】:How can I get the iOS status bar to *overlay* the app surface rather than pushing it down?如何让 iOS 状态栏*覆盖*应用程序表面而不是向下推?
【发布时间】:2013-12-21 07:37:58
【问题描述】:

我正在为 iOS(和其他)开发一个 Phonegap 应用程序。风景只有风景。我正在使用带有 PG 3.1 的 Phonegap Build。我正在使用 iOS7 的 iPad3 上进行测试。我需要一个不仅适用于 iOS7,还适用于几个版本的解决方案。

在 Xcode iPad 模拟器中,应用程序使用整个屏幕。状态栏是透明的并覆盖在应用程序的顶部。但是,当我在 iPad 上测试应用程序时,状态栏不再透明,并将应用程序向下推 20px,这意味着底部 20px 消失了。

对于这个特定的应用程序,如果顶部被覆盖会更好,这样应用程序的重要底部不会被推到视野之外。所以问题是: 我可以让状态栏完全消失,还是让它透明并覆盖?

我已经为 Phonegap 尝试了Status Bar plugin,但它似乎无法正常工作。我在 deviceReady 函数中使用了 StatusBar.hide(),但该栏仍在视图中。更糟糕的是,屏幕的右侧部分对触摸事件完全没有响应。好像屏幕的那部分有透明覆盖,可能与this bug 有关。如那里所述,虽然覆盖不是透明的,但它似乎覆盖了在我的情况下无响应的完全相同的区域。

【问题讨论】:

  • 意见:你不想那样做。如果你的视图是可滚动的,那么各种难看的文字就会出现在状态栏下方。
  • 视图本身不可滚动,但某些视图包含可滚动元素。
  • 在这种情况下,为什么不将视图缩小 20pt 并显示在状态栏下方呢?会有同样的效果,不是吗?
  • 我可以这样做,但如果可以的话,我更喜欢透明的覆盖状态栏。这些不同解决方案的 iOS6 和 iOS5 兼容性如何?
  • ios5/6 没有透明覆盖层——只有 7。无论如何,你想要什么效果?您仍然需要在其下方使用纯色以使文本可读吗?

标签: javascript ios cordova phonegap-plugins


【解决方案1】:

我让它在 Cordova 3.6 + iOS 7.1 中完美运行。考虑到 iOS 7 和 8 各占 50% 的市场份额,这个解决方案应该足够了。

我正在使用的插件:org.apache.cordova.statusbar

我没有使用StatusBar.hide()

var hideSb = function(){
//        StatusBar.hide;
        cordova.exec(null, null, 'StatusBar', 'hide', ['Ehi', 'You']);
    };

致电fn onDeviceReady。这是基于:

cordova.exec(
    callbackFn,     // A callback function that deals with the JSON object from the CDVPluginResult instance
    errorFn,        // An error handler
    'TargetClass',  // What class to target messages to (method calls = message in ObjC)
    'methodToCall', // Which method to call
    [ 'array', 'of', 'arguments'] // These go in the CDVInvokedUrlCommand instance's.arguments property
);

而且我已经体验到将它包装在一个函数中是可行的,而直接使用它有时是行不通的。我也对传递的论点一无所知!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    • 2013-09-26
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 2017-05-30
    • 2017-11-19
    相关资源
    最近更新 更多