如何使用Cordova完全隐藏iOS中的状态栏?

2024-01-13

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

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

我已经添加了cordova-plugin-statusbar插件,并在deviceready回调,我正在打电话StatusBar.hide().

然而,当启动图像消失并且正在渲染第一页时,在显示页面之前状态栏会闪烁。虽然只有一瞬间,但看起来很糟糕。

有人知道如何完全隐藏状态栏,并且在隐藏之前不闪烁吗?


原答案

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

根据docs https://github.com/apache/cordova-plugin-statusbar#hiding-at-startup(并且喜欢杰塞萨尔移动 https://stackoverflow.com/users/1351469/jcesarmobile回答):

启动时隐藏

在运行时,您可以使用下面的 StatusBar.hide 函数,但是如果 如果您希望 StatusBar 在应用程序启动时隐藏,则必须修改 您应用程序的 Info.plist 文件。

添加/编辑这两个属性(如果不存在)。设置“状态栏是 最初隐藏”为“是”并设置“查看基于控制器的状态栏 外观”改为“NO”。如果您在没有 Xcode 的情况下手动编辑它,则按键 值为:

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

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

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

(如果您使用的是最新的 Cordova CLI,请参阅此处的更新 2)

因此,作为干净的替代方案,您应该使用科尔多瓦自定义配置 https://www.npmjs.com/package/cordova-custom-config。根据文档:

我为什么要使用它?

虽然一些平台首选项可以通过设置 科尔多瓦/Phonegap 在config.xml,很多(特别是与 较新的平台版本)不能。一种解决方案是手动编辑 配置文件位于platforms/目录中,但这不是 可跨多个开发机器或 CI 环境进行维护 后续的构建操作可能会覆盖您的更改。

这个插件试图通过允许额外的来解决这个差距 准备操作后要设置的特定于平台的首选项 已完成,允许 Cordova 设置的首选项 覆盖或其他要设置的未指定的首选项。自从 自定义首选项被输入到config.xml, 他们可以 致力于版本控制,因此应用于多个 开发机器、CI 环境以及构建之间的维护 或者即使平台被删除并重新添加。

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

cordova plugin add cordova-custom-config --save

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

请参考科尔多瓦自定义配置 https://github.com/dpa99c/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 插件版本 custom-config-file标记为config-file.

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

更新 2(2018 年 7 月 6 日)

Since 科尔多瓦 CLI 6,您现在不需要安装cordova-custom-config插件用于改变platforms/ios/*-info.plist文件。 Cordova CLI 具有内置支持,使用edit-config标签。所以现在你可以简单地将以下内容添加到你的config.xml under <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文件。要解决此问题,您有两个选择(参考 https://stackoverflow.com/questions/47404622/edit-config-for-ios-usage-descriptions-doc-find-is-not-a-function):

选项 1(杀伤力过大但有效)

重新添加iOS平台:

ionic cordova platform remove ios
ionic cordova platform add ios

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

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

Use platform/ios/ios.json代替*-Info.plist in the edit-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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用Cordova完全隐藏iOS中的状态栏? 的相关文章

  • NSXMLParser 解析使用 Windows-1256 编码的 xml 文件

    我想解析 Windows 1256 编码的 rss 文件 但解析器没有读取它 我用 UTF8 编码做了很多解析 但只有这个不起作用 为什么 带有 Windows 1256 的 rss 文件 http youm7 com Rss asp 解决
  • 在 Xcode 中查看 TestFlight 崩溃日志

    我已将我的应用程序发送给 TestFlight 的一些外部测试人员 仅当您从 testFlight 安装应用程序时才会出现问题 如果我从 Xcode 安装它 一切都很好 因此 我必须从 iPhone 中删除我的应用程序 并将自己添加为外部测
  • 将 Unmanaged 与 nil 进行比较

    代码是从这篇博客文章复制的 http matthewpalmer net blog 2014 06 21 example ios keychain swift save query http matthewpalmer net blog 2
  • 将数据库(例如 sqlite)与 cocos2d-x 一起使用

    我开始在 iPhone 上构建游戏应用程序 我正在使用 cocos2d x 游戏引擎 因为它很容易从那里移植到 Android 而且编码是用我非常熟悉的C 编写的 我想知道是否有办法在 cocos2d x 中使用任何数据库 虽然sqlite
  • 在 SwiftUI 中,如何在 UIView 内部或作为 UIView 使用 UIHostingController?

    另一个问题标题可以是 如何将 UIHostingController 的视图添加为 UIView 的子视图 我正在创建一个新的 UI 组件 并且很乐意尝试 SwiftUI 下图是当前的视图结构 UIView 是我现在正在使用的 右上 Swi
  • 测试期间应用程序图标未显示在 iPhone 5 设备上

    我有一个 120x120 图标图像 在模拟器上运行良好 但是当我在我的设备上尝试时 该图标没有显示 有什么想法吗 我想到了 这实际上真的很烦人 因此 UI 设计师只需将其 psd 文件重命名为 png xcode 认为这样就可以了 但是 重
  • UIAlertView 可以通过委托传递字符串和 int 吗

    我有一个 UIAlertView 事实上有几个 并且我正在使用该方法 void alertView UIAlertView alertView clickedButtonAtIndex NSInteger buttonIndex如果用户未按
  • 在 Objective-C 中使用 perl?

    CPAN 有大量非常有用的库 除了将它们移植到 Objective C 之外 是否还有在 iOS 上将 Perl 代码嵌入到 Objective C 中的方法 我对使用特别感兴趣电子表格 阅读 http kobesearch cpan or
  • Xcode:仅在默认状态下设置按钮上的图像,也未选择

    一般来说 我是 Xcode 和 iPhone 编程的新手 我有一个简单的问题困扰着我 我想在按钮上设置图像 因为它是默认状态 所以我选择按钮 并在 显示属性检查器 选项卡中 选择 状态配置 作为默认值 然后在 图像 下拉列表中找到所需的图像
  • 智能排序 Localized.strings 文件

    In my Localizable Strings我尝试按字母顺序排列所有对 是否可以按字母顺序重新排序我的Localizable strings 也许使用 genstring 或特殊的 bash 脚本 在这里我还有额外的要求需要完成 1
  • 减缓 Push Segue 的过渡

    我想知道是否有一种方法可以像 Tinder 和 Snapchat 那样减慢 推进和返回 速度 这就像正常的转场 但不知怎的 它过渡得很慢 我通常通过在 Storyboard 上设置推送通知并以编程方式调用 segue 来处理推送 Segue
  • 收到 fcm 推送通知时设置应用程序徽章

    我正在使用 FCM 进行云消息传递 当我在后台和前台应用程序状态下收到来自服务器的推送通知时 我想添加应用程序徽章 我缺少什么 主要问题是根据推送通知添加 更新 删除应用程序徽章 我可以接收和处理推送消息 我在这个问题上花了 3 天 请帮帮
  • Cordova 插件回调使用什么线程?

    方法在哪个线程中CallbackContext https github com apache cordova android blob master framework src org apache cordova CallbackCon
  • PhoneGap闪屏可以显示gif图片吗?

    我尝试为我的phonegap应用程序设置启动画面图像 当我设置静态图像 例如png 时 一切顺利 现在我需要在启动屏幕上加载动画 我尝试设置 gif 图像而不是静态图像 但是 在我这样做之后 我无法再启动我的应用程序 phonegap启动画
  • 尝试将存档提交到 App Store 时出现各种 ITMS 错误

    所以这是一个奇怪的问题 当我尝试将我的存档提交到 App Store 时 出现以下错误 ERROR ITMS 90049 This bundle is invalid The bundle identifier contains disal
  • 如何保存 UIButton 的属性并使用按钮加载? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在应用程序中保存和加载 UIButton 的 alpha 值 https stackoverflow com questions 7336594 how can i save and load t
  • 自动从 iTunes Connect 下载销售报告

    我有一个漂亮而 hacky 的 Perl 脚本来自动从 iTunes Connect 抓取和下载销售报告文件 截至今天 苹果对销售报告网站进行了全面改革 它看起来好多了 但它使用了大量 JavaScript 简单的抓取不再有效 那么 有人知
  • Spotify:使用网络 API 登录不接受重定向 URL

    我正在尝试使用 Web API 登录 Spotify 因为我不需要会话对象 在我的授权方法中 我需要传入重定向 url 但 GET 请求中不接受 iOS 重定向 url 的格式化方式 func authorize create the ur
  • 检测 UICollectionView 中的页面更改

    我尝试寻找这个问题一段时间 但找不到这个问题的答案 我的问题是我有一个UICollectionView滚动方向是Horizontal with Paging Enabled 我的问题是我想保留用户所在的当前页码 所以我创建了一个int变量
  • 内联 YouTube 视频在 iOS 上的 cordova 应用程序中不起作用

    我用 cordova 开发了一个移动应用程序 我确实需要能够播放内联 YouTube 视频 我尝试了一段时间来解决它 我设置了属性playsinline to 1在 YouTube iframe API 中 I put

随机推荐