使用Phonegap启动图像后,白屏闪烁

时间:2012-07-02 20:33:26

标签: jquery iphone xcode cordova launching-application

加载启动图像后,我在应用程序加载之前会出现白屏。我正在使用带xcode的phonegap。我希望我的应用程序加载我的lauch图像,以便它遵循ios开发人员指南并提供平滑的启动。我认为这个白色屏幕是我的应用程序的webview加载。我希望这个webview能够清楚。有关修复此问题或解决方法的任何想法吗?

我尝试了以下代码,但在发布时没有任何区别。此代码位于我的MainViewController.m

-void (webViewDidFinishLoad:(UIWebView*) theWebView
{
theWebView.backgroundColor = [UIColor clearColor];
theWebView.opaque = NO;
 }

我已经研究了很多,但我还没有找到解决方案。

6 个答案:

答案 0 :(得分:4)

我也面临同样的问题,尝试我为解决问题所做的这3个步骤:

  1. 在您的phonegap / cordova plist文件中将AutoHideSplashScreen设为NO

  2. 将此行添加到CDVMainViewController.m的viewDidLoad方法

    self.useSplashScreen = YES;
    
  3. 然后将此代码添加到onDeviceReady()方法

    function onDeviceReady()
    {
    // do your thing!
    cordova.exec(null, null, "SplashScreen", "hide", []);  //On Cordova 1.6. 0
    }
    

答案 1 :(得分:2)

您必须在启动后覆盖伪造“Default.png”图像的ModalViewController,将视图控制器覆盖在UIWebView的顶部,并显示UIActivityIndi​​cator,以便用户知道您正在加载您的应用程序。网页完成后,您可以关闭视图控制器。

希望这有帮助。

答案 2 :(得分:2)

您是否考虑过手动隐藏启动画面,以使页面在消失之前就已准备就绪?

window.setTimeout(function() { 
navigator.splashscreen.hide();
},1350);

并在您的phonegap / cordova plist文件中将AutoHideSplashScreen设置为NO

答案 3 :(得分:0)

我有类似的问题。我没有在代码中修复它,而是在UI编辑器中修复它。包含uiwebview的窗口本身在属性中也有背景颜色。这可以设置为您选择的颜色,以消除白色闪光。 (我把它设置为黑色。)

答案 4 :(得分:0)

从Cordova / Phonegap 3+开始,您需要在config.xml中设置首选项:

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

您还需要插件:

cordova plugin add org.apache.cordova.splashscreen

然后,

document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
  // depending on how many things you are rendering on your webview, you might want to add an artificial wait
  var SPLASH_SCREEN_DELAY = 500;
  setTimeout(function() {
    navigator.splashscreen.hide();
  }, SPLASH_SCREEN_DELAY);
}

答案 5 :(得分:0)

我遇到了同样的问题,经过一些研究后我发现这是因为应用程序需要一些时间来加载所有必需的.css和.js文件。

为了克服这个问题,我们可以使用启动画面并延迟其时间,以便在加载所有必需的文件之前,最终用户不会看到乱码的白色屏幕,而是我们的自定义启动画面可见。

我通过参考&#34; ian&#34;给出的答案的第一部分和第二部分来解决它。这些是我遵循的步骤。

第1步:安装Cordova Splashscreen插件。

cordova plugin add org.apache.cordova.splashscreen

步骤2:将config.xml文件中的自动隐藏启动画面首选项设置为false。

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

第3步:增加启动画面延迟时间

<preference name="SplashScreenDelay" value="6000"/>

希望这有助于某人:)