7

我知道这已经被问过(并回答了)好几次(Phonegap 在启动屏幕后显示白屏 - IOSPhonegap 2.0 - 在应用程序启动时,在我的应用程序加载之前白屏闪烁如何在phonegap iOS 应用程序的开始?)但这些解决方案似乎都不适合我。也许是因为我使用的是 Phonegap 版本 3?

我只加载 Phonegap 和 jQuery 2.0.0(其他解决方案处理我没有使用的 jQuery-mobile)并且我只针对 iOS 进行部署。我加载了初始图像,然后应用程序显示白屏(持续时间不同 - 我猜它可能正在加载应用程序?)然后我的 index.html 加载了我的第一个屏幕。这是我现在的头:

<head>
    <meta charset="utf-8" />
    <meta name="format-detection" content="telephone=no" />
    <meta name="viewport" content="user-scalable=no, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />

    <link type="text/css" rel="stylesheet" href="css/main.css" />

    <title>My App</title>

    <script type="text/javascript" src="phonegap.js"></script>
    <script src="js/lib/jquery-2.0.0.min.js"></script>
    <script src="js/main.js"></script>      
</head>

我尝试将其添加到我的 config.xml(与 index.html 位于同一文件夹级别):

<preference name="backgroundColor" value="0x000000" />

但我仍然得到白屏闪烁。我还尝试手动隐藏/显示飞溅:

function onDeviceReady() {
    navigator.splashscreen.show();
}

但这似乎根本没有任何效果。有人有什么建议吗?

4

5 回答 5

18

我终于能够消除飞溅闪光,但我不得不使用 Cordova 来做到这一点。以下是我采取的步骤:

在终端:

cordova create ~/path/to/project “com.appname.app” “appName”
cd ~/path/to/project
cordova platform add ios
cordova build
cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-splashscreen.git
cordova build

使用 Finder 导航到~/path/to/project/platforms/ios/并双击projectname.xcodeproj以在 Xcode 中打开项目。

接下来,我进入并编辑了图像。你可以通过多种方式做到这一点。这是我所做的:在 Xcode 中,导航到Resources/splash/,右键单击要更改的图像,选择Show in Finder并使用您想要更改图像的任何工具。

完成后,返回 Xcode 并打开根级别config.xml(仍然不确定为什么有两个config.xml文件,但您想要文件夹结构中最远的一个)。AutoHideSplashScreen将属性更新为

<preference name="AutoHideSplashScreen" value="false" />.

从 Xcode 主菜单中,选择Product > Clean,然后选择Product > Build

反复为我工作。然后,我可以使用我的应用程序中的navigator.splashscreen.show()andnavigator.splashscreen.hide()方法(如果不执行所有这些步骤,它似乎没有响应)。

希望这可以帮助!

于 2013-08-21T12:39:31.670 回答
4

我的插件有问题,或者 phonegap 有问题,所以

function onDeviceReady() {
    navigator.splashscreen.show();
}

对我不起作用。

我通过将 webview alpha 设置为 0 来修复它,直到它被加载:

3个步骤:

  1. "CDVViewController.m"在方法“ ”的文件中,-(void)createGapView我添加了:
    self.webView.alpha=0;
  2. 在方法文件"MainViewController.m"中“-(void)WebViewDidFinishLoad:(UIWebView*)theWebView"我补充说: theVebView.alpha=1;
  3. 在文件中,"MainController.xib"我将背景更改为黑色(将其设置为您喜欢的任何颜色)。

现在,在内容完全加载之前,我有一个黑色的,而不是白屏闪烁。对我来说已经足够好了。(虽然不完美)

希望这可以帮助..

于 2013-12-13T19:44:59.953 回答
1

尝试添加

<param name="onload" value="true" /> 到 config.xml 中的 SplashScreen 功能。

于 2014-07-11T15:24:27.873 回答
0

这对我有用 build.phonegap.com

第 1 步:将 Slashscreen 插件添加到您的 config.xml

<gap:plugin name="org.apache.cordova.splashscreen" version="0.2.7" />

第 2 步:使用此首选项更新您的 config.xml。

<preference name="auto-hide-splash-screen" value="false" />

第 3 步:将插件函数调用添加到您的 'deviceready' 事件

<script>
  document.addEventListener("deviceready", onDeviceReady, false);
  function onDeviceReady() {
   navigator.splashscreen.hide()
  }
</script>
于 2014-04-08T23:20:33.017 回答
0

在对splash插件生气之后,我找到了这个解决方案:

  1. 在 MainViewController.xib 中,添加一个 UIImageView (imgView)。
  2. 将您的初始图像放入其中,设置比例以填充。
  3. 在 MainViewController.m 中,覆盖 - (void)webViewDidFinishLoad:(UIWebView*)theWebView
  4. 在 [super webViewDidFinishLoad:theWebView] 之后添加这些代码;

    [self.view sendSubviewToBack:imgView];

    imgView.hidden = 是;

于 2014-09-25T16:50:58.723 回答