gpt4 book ai didi

ios - 如何使用 Cordova 在 iOS 中完全隐藏状态栏?

转载 作者:IT王子 更新时间:2023-10-29 07:49:41 25 4
gpt4 key购买 nike

我希望我正在开发的 Cordova 应用程序没有状态栏。我快到了,启动画面上没有显示状态栏。但是,在加载的第一个页面上,您会看到状态栏在隐藏之前闪烁。

我在 Xcode 中选中了“隐藏状态栏”复选框。

我添加了 cordova-plugin-statusbar 插件,在 deviceready 回调中,我调用了 StatusBar.hide() .

然而,当初始图像消失并且第一页正在呈现时,在显示页面之前状态栏会闪烁。这只是一瞬间,但看起来很糟糕。

谁知道状态栏如何完全隐藏,隐藏前不闪现?

最佳答案

原始答案

虽然我很晚才回答这个问题,但经过一整天的搜索后,我得到了这个简单的工作,所以我想与其他人分享。

根据docs (喜欢 jcesarmobile 回答):

Hiding at startup

During runtime you can use the StatusBar.hide function below, but if you want the StatusBar to be hidden at app startup, you must modify your app's Info.plist file.

Add/edit these two attributes if not present. Set "Status bar is initially hidden" to "YES" and set "View controller-based status bar appearance" to "NO". If you edit it manually without Xcode, the keys and values are:

这需要您修改应用的 info.plist里面的文件platforms/ios/<app-name>/<app-name>-Info.plist文件添加以下行:

<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

但不推荐这样做,因为这将要求您保存可能在构建过程后被覆盖的更改。

(如果您使用的是最新的 Cordova CLI,请从此处查看更新 2)

因此,作为干净的替代品,您应该使用 cordova-custom-config .根据文档:

Why should I use it?

While some platform preferences can be set via Cordova/Phonegap in the config.xml, many (especially ones related to newer platform releases) cannot. One solution is to manually edit the configuration files in the platforms/ directory, however this is not maintainable across multiple development machines or a CI environment where subsequent build operations may overwrite your changes.

This plugin attempts to address this gap by allowing additional platform-specific preferences to be set after the prepare operation has completed, allowing either preferences set by Cordova to be overridden or other unspecified preferences to be set. Since the custom preferences are entered into the config.xml, they can be committed to version control and therefore applied across multiple development machines, CI environments, and maintained between builds or even if a platform is removed and re-added.

现在,您所要做的就是为您的 Cordova 应用程序运行以下命令:

cordova plugin add cordova-custom-config --save

并将此添加到您的 config.xml <platform name="ios"> 下的文件 block :

请引用cordova-custom-config (版本 > 5)插件以获取更多信息

<custom-config-file parent="UIStatusBarHidden" platform="ios" target="*-Info.plist">
<true/>
</custom-config-file>
<custom-config-file parent="UIViewControllerBasedStatusBarAppearance" platform="ios" target="*-Info.plist">
<false/>
</custom-config-file>

更新 1(2018 年 2 月 20 日)

如果您使用的 cordova-custom-config 插件版本 < 5,则替换 custom-config-fileconfig-file 标记.

https://github.com/dpa99c/cordova-custom-config#changes-in-cordova-custom-config5

更新 2(2018 年 7 月 6 日)

Cordova CLI 6 开始,您现在不需要安装 cordova-custom-config用于更改 platforms/ios/*-info.plist 的插件文件。 Cordova CLI 使用 edit-config 内置支持它标签。所以现在你可以简单地在你的 config.xml 中添加以下内容在 <platform name="ios"> 下:

<edit-config file="*-Info.plist" mode="merge" target="UIStatusBarHidden">
<true />
</edit-config>
<edit-config file="*-Info.plist" mode="merge" target="UIViewControllerBasedStatusBarAppearance">
<false />
</edit-config>

当您构建 Cordova 应用程序时,此更改可能会失败,因为它会与 platform/ios/ios.json 冲突文件。要解决此问题,您有两种选择 ( reference ):

选项 1(矫枉过正但有效)

重新添加iOS平台:

ionic cordova platform remove ios
ionic cordova platform add ios

https://issues.apache.org/jira/browse/CB-13564

选项 2(推荐但不适合我)

使用 platform/ios/ios.json而不是 *-Info.plistedit-config文件。所以你必须添加的最终配置:

<edit-config file="platforms/ios/ios.json" mode="merge" target="UIStatusBarHidden">
<true />
</edit-config>
<edit-config file="platforms/ios/ios.json" mode="merge" target="UIViewControllerBasedStatusBarAppearance">
<false />
</edit-config>

然后做:

cordova prepare ios

关于ios - 如何使用 Cordova 在 iOS 中完全隐藏状态栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34795921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com