如何使用 Phonegap Build 删除 iOS 状态栏?

Posted

技术标签:

【中文标题】如何使用 Phonegap Build 删除 iOS 状态栏?【英文标题】:How to remove iOS status bar with Phonegap Build? 【发布时间】:2014-01-11 02:46:45 【问题描述】:

ios7中使用Phonegap Build 3.1可以去掉状态栏吗?在 Xcode 中本地构建时,我可以删除状态栏,但是一旦我尝试 Phonegap Build,它又回来了。

    是否有完全删除状态栏的配置首选项? 如果没有,是否可以将状态栏覆盖在应用视图顶部并将其设置为透明背景?

我确实希望状态栏将应用视图下推 20 像素,现在就是这种情况。

【问题讨论】:

我最终解决的方法是在 Xcode 中本地构建应用程序,而不是使用 Phonegap Build。我可以在 info.plist(或其他任何名称)中配置它。 看看下面:***.com/questions/19209781/… 看看下面:***.com/questions/19209781/… 【参考方案1】:

从 Phonegap 3 开始,您现在可以通过 config.xml customize plist 文件。

代码:

<gap:config-file platform="ios" parent="UIViewControllerBasedStatusBarAppearance" overwrite="true">
    <false/>
</gap:config-file>

【讨论】:

奇怪的是它适用于我昨天提交的应用程序,您是否也有全屏偏好(请参阅 pppontusw 的回答)?我把它留在了我的配置文件中,我想知道这是否与它有关。 这个和全屏的组合都不适合我。我更改了 plist 并内置了 xcode,这是我可以让它工作的唯一方法(PG 3.3) 这也对我有用。在 iOS 7.1.1 中使用 Phonegap 3.4.0 测试。 状态栏已被移除,但顶部仍留有 20px 的间隙。 @John 和其他人,请注意您可能还需要添加:&lt;gap:config-file platform="ios" parent="UIStatusBarHidden" overwrite="true"&gt; &lt;true/&gt; &lt;/gap:config-file&gt; 这来自 PhoneGap 文档中关于“全屏”首选项:注意:可能不支持较新版本iOS,但用户可以在 phonegap 构建中使用 config-file 元素,并将 UIViewControllerBasedStatusBarAppearance 设置为 false 并将 UIStatusBarHidden 设置为 true。 从 PhoneGap 3.6.3 开始,这可以正常工作。【参考方案2】:

通常,您会编辑 info.plist 并添加此键:

 <key>UIViewControllerBasedStatusBarAppearance</key><false/>

但由于您无法在构建时执行此操作,因此您必须添加一个插件:

https://github.com/phonegap-build/StatusBarPlugin/blob/master/README.md

然后:

状态栏.hide();

【讨论】:

我试过那个插件,结果为负。请参阅此问题的最后一段:***.com/q/20716753/1158376。 这个插件对我有用:github.com/apache/cordova-plugin-statusbar(注意:这是用于 Cordova,而不是 PhoneGap 构建)但是我的应用程序上方仍然有一个非常薄的迷你状态栏 - 删除我需要勾选Xcode > Targets > General > Deployment Info 中的“隐藏状态栏”【参考方案3】:

将此函数添加到 MainViewController.m 文件中:

//fix not hide status on ios7
- (BOOL)prefersStatusBarHidden

    return YES;

【讨论】:

这是唯一对我有用的东西,iPad 2 Simulator,iOS 8.3,phonegap 3.5.0-0.20.5 这应该是答案!最好的解决方案。【参考方案4】:

单击 XCode 根项目文件夹下的 "projectname-Info.plist" 文件,您将看到一个 UI,您可以在其中查看键与值条目,您可以添加/删除键,添加一个新键只需查找“状态栏最初隐藏”并将值设置为“YES”。

【讨论】:

我发现您还需要将View controller-based status bar appearance 设置为NO【参考方案5】:

我在 config.xml 中使用了以下内容,它完全删除了状态栏,在 iOS 7.0.3 和 7.0.4、Phonegap 版本 3.0.0 上测试,如果有帮助的话。

    <preference name="fullscreen" value="true" />

【讨论】:

我明白了,抱歉我帮不上什么忙。如果您不需要 3.1,也许可以尝试使用 3.0? 是否可以仅在横向模式下隐藏网页视图? 是否在根config.xml中?【参考方案6】:

只需安装状态栏插件(我使用的是 Cordova 5.x):

cordova plugin add cordova-plugin-statusbar@1.0.1

在你的代码中只是引用它的全局变量并使用 .hide():

StatusBar.hide()

【讨论】:

【参考方案7】:

对于 Cordova,我实际上必须做两件事。

    当我使用 XCode 构建时,我将 Target->Statusbar 样式设置为 -> HIDDEN 这将在启动时隐藏启动屏幕上的状态栏。

    您还必须在准备好插件的设备上隐藏它。否则,它会再次出现。为此,请安装插件:

cordova plugin add org.apache.cordova.statusbar

并在设备就绪时调用它:

StatusBar.hide();

【讨论】:

【参考方案8】:

这对我有用:

<preference name="fullscreen" value="true" />

我正在开发 android

【讨论】:

在什么config.xml中?在根目录中?【参考方案9】:

我回答这个问题是为了删除状态栏altogether in your previous question

核心部分:

我让它在 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']);
    ;

【讨论】:

这应该是一条评论。

以上是关于如何使用 Phonegap Build 删除 iOS 状态栏?的主要内容,如果未能解决你的问题,请参考以下文章

使用 PhoneGap Build 为 iOS 构建现有的 PhoneGap 项目

Adobe PhoneGap Build (iOS) 和 PushWoosh

phonegap build:没有收到 ios 推送通知

如何在 iOS 中删除 Phonegap 构建权限警报?

如何从 Phonegap iOS 项目中删除未使用的框架和库?

其他平台上的PhoneGap API 元素,使用PhoneGap Build