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

25

是否有可能在使用Phonegap Build 3.1时消除iOS7中的状态栏?我可以在Xcode本地构建时删除状态栏,但一旦尝试使用Phonegap Build,它就会重新出现。

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

我不希望状态栏将应用程序视图下推20像素,这是现在的情况。


我最终解决的方法是在Xcode中本地构建应用程序,而不是使用Phonegap Build。我能够在info.plist(或称为其他名称)中进行配置。 - Per Quested Aronsson
请看下面链接: https://dev59.com/9WIk5IYBdhLWcg3wguX-#23105459 - xdemocle
请看下面: https://dev59.com/9WIk5IYBdhLWcg3wguX-#23105459 - xdemocle
9个回答

16

从 Phonegap 3 开始,您现在可以通过 config.xml 定制 plist 文件。代码:

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

很奇怪,昨天我提交的应用程序可以正常运行,你是否也设置了全屏偏好(请参见pppontusw的答案)?我在我的配置文件中保留了它,不知道这是否有关系。 - Minifyre
这对我也起作用了。在iOS 7.1.1中使用Phonegap 3.4.0进行了测试。 - Carlos Garcia
状态栏已被移除,但仍在顶部留下了20像素的间隙。 - Matt
2
@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中已经正确工作了。 - DuncanMack
这个答案加上@DuncanMack的评论对我在使用Cordova 6.3.1时成功移除了iOS状态栏。 - Jeff G
显示剩余2条评论

14

将此功能添加到MainViewController.m文件中:

//fix not hide status on ios7
- (BOOL)prefersStatusBarHidden
{
    return YES;
}

这是我唯一可行的方案,iPad 2 模拟器,iOS 8.3,phonegap 3.5.0-0.20.5。 - patrickkidd
1
这应该是最佳解决方案!没有比它更好的了。 - idude

14

我尝试了那个插件,但结果是负面的。请参见此问题中的最后一段:http://stackoverflow.com/q/20716753/1158376。 - Per Quested Aronsson
这个插件对我很有用:https://github.com/apache/cordova-plugin-statusbar(注意:这是针对Cordova而不是PhoneGap Build的)然而,我的应用程序上方仍然有一个非常细的迷你状态栏 - 要删除它,我需要在Xcode>目标>常规>部署信息中勾选“隐藏状态栏”。 - kris

6

点击XCode根项目文件夹下的"projectname-Info.plist"文件,您将看到一个用户界面,其中显示了键值对条目,您可以添加/删除键,添加新的键只需查找"Status bar is initially hidden"并将其值设置为"YES"。


5
我发现你还需要将视图控制器的状态栏外观设置为“NO”。 - Jason Moore

4

我在config.xml中使用以下代码,可以完全移除状态栏,在iOS 7.0.3和7.0.4上测试通过,Phonegap版本为3.0.0(如果需要的话)。

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

我明白了,很抱歉我不能提供太多帮助。如果您不需要3.1的话,可以尝试使用3.0版本。 - pppontusw
在Web视图中,仅在横向模式下隐藏是否可行? - iancrowther
它是否在根目录的config.xml文件中? - Toni Michel Caubet

3

使用 Cordova,我需要做两件事情。

  1. 在使用 XCode 进行构建时,我需要设置 Target->Statusbar style 为 -> HIDDEN,这样可以在启动画面上隐藏状态栏。

  2. 同时,你还需要使用插件在设备准备就绪时隐藏它,否则它会重新出现。为此,请安装以下插件:

cordova plugin add org.apache.cordova.statusbar

并在 deviceready 中调用此函数:

StatusBar.hide();

3

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

cordova plugin add cordova-plugin-statusbar@1.0.1

在您的代码中,只需引用其全局变量并使用.hide():

StatusBar.hide()

1
这对我有用:

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

我正在开发Android。


在哪个config.xml文件中?是在根目录下的那个吗? - Toni Michel Caubet

0

我在你之前的问题中已经回答了如何彻底移除状态栏的方法(点击这里查看)

关键部分:

我成功地在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']);
    };

这应该是一个注释。 - Paresh Mayani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接