2012-07-02 9 views
5

Después de cargar la imagen de inicio, aparece una pantalla en blanco antes de que se cargue la aplicación. Estoy usando phonegap con xcode. Me gustaría que mi aplicación se cargue en mi imagen lauch para que siga las directrices ios del desarrollador y proporcione un lanzamiento sin problemas. Creo que esta pantalla blanca es una carga de webview para mi aplicación. Me gustaría que esta página web fuera clara. ¿Alguna idea sobre una solución para este problema o una solución alternativa?Destello de pantalla en blanco después de iniciar la imagen con Phonegap

He intentado el siguiente código y no hizo ninguna diferencia en mi lanzamiento. Este código se encuentra en mi MainViewController.m

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

He investigado mucho en esto, pero no he encontrado una solución.

Respuesta

2

Deberá superponer un ModalViewController que falsifica la imagen "Default.png" después del inicio, superponer el controlador de vista en la parte superior de UIWebView y mostrar un UIActivityIndicator, para que el usuario sepa que está cargando su aplicación. Una vez que la página web está lista, puede cerrar su controlador de vista.

Espero que esto ayude.

+0

Soy nuevo en el desarrollo. ¿Me puede dar un ejemplo o una captura de pantalla? ¡Gracias! – stat8

0

Tuve un problema similar. No lo solucioné en el código, sino que lo arreglé en el Editor de UI. La ventana misma que contiene uiwebview también tiene un color de fondo en las propiedades. Esto se puede establecer en el color que prefiera para eliminar el destello de blanco. (Configuré el mío en negro.)

+0

Intenté cambiar el color de fondo en MainViewController.xib pero todavía no cambió el color de fondo tras el inicio. ¿Hay otra ubicación al lado del xib para cambiar el color de fondo? ¡Gracias! – stat8

2

¿Ha pensado en ocultar manualmente la pantalla de bienvenida para que su página esté lista antes de que desaparezca?

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

y SET AutoHideSplashScreen a NO en el archivo plist/Cordova PhoneGap

4

que había enfrentado el mismo problema, pruebe estos 3 pasos que he hecho para resolver el problema:

  1. establezca AutoHideSplashScreen en NO en su archivo plta de phonegap/cordova

  2. Agregue esta línea a su método viewDidLoad de CDVMainViewController.m

    self.useSplashScreen = YES; 
    
  3. A continuación, agregue este código a onDeviceReady() método

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

¡Perfecto! Muchas gracias :) Trabajar con Phonegap 2.4 –

+1

'useSplashScreen' está en desuso: obsoleto en Cordova 2.5. Agregue/elimine el complemento SplashScreen en lugar de establecer esta propiedad. He probado esta solución con PhoneGap 2.5 y jQueryMobile1.3, no funciona. –

+0

El archivo plist está en desuso en las versiones más nuevas de Phonegap/Cordova; use config.xml ahora (detalles en mi respuesta a continuación) – ian

0

Como de Córdoba/Phonegap 3+, es necesario establecer la preferencia en config.xml:

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

También necesitará el complemento:

cordova plugin add org.apache.cordova.splashscreen 

Entonces,

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); 
} 
0

que estaba enfrentando el mismo problema, y ​​después de hacer algunas investigaciones he encontrado que este es causado porque la aplicación requiere algún tiempo para cargar todo el .css y .js requerido .

Para solucionar el problema, podemos usar la pantalla de bienvenida y también retrasar su tiempo, de modo que hasta que se carguen todos los archivos necesarios, el usuario final no verá una pantalla de salpicadura en blanco.

Lo resolví remitiéndome la primera y la segunda parte de la respuesta dada por "ian". Estos son los pasos que seguí.

Paso 1: instale el complemento de Splashscreen de Cordova.

cordova plugin add org.apache.cordova.splashscreen

Paso 2: Ajuste el Ocultar automáticamente Preferencia pantalla de bienvenida del archivo config.xml a falso.

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

Paso 3: Aumentar el tiempo de retardo pantalla de bienvenida

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

Espero que esto ayude a alguien :)

Cuestiones relacionadas