如何使用 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 和其他人,请注意您可能还需要添加:<gap:config-file platform="ios" parent="UIStatusBarHidden" overwrite="true"> <true/> </gap:config-file>
这来自 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