2013-08-02 8 views
8

Wiem, że to pytanie zostało kilkakrotnie zadane (i odpowiedziałem) kilka razy (Phonegap showing white screen after the splash screen - IOS, Phonegap 2.0 - on app launch a white screen flashes prior to my app loading, how to to kill the white flickering splashscreen at the start of phonegap iOS app?), ale żadne z tych rozwiązań nie działa dla mnie. Może dlatego, że używam wersji 3 Phonegap?Phonegap 3 biały flash after splash

Załaduję tylko Phonegap i jQuery 2.0.0 (inne rozwiązania dotyczą jQuery-mobile, których nie używam) i kierujemy się tylko na iOS do wdrożenia. Mam ładowanie obrazu powitalnego, a następnie aplikacja wyświetla biały ekran (czas trwania jest zmienny - domyślam się, że może załadować aplikację). Następnie mój index.html załaduje mój pierwszy ekran. Oto mój obecny szef:

<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> 

Próbowałem dodając to do mojego config.xml (na tym samym poziomie folderu jako index.html):

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

ale wciąż biały błysk ekranu. Próbowałem też ręcznie ukrywanie/pokazywanie plusk z:

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

ale które nie wydają się mieć żadnego wpływu w ogóle. Ktoś ma jakieś sugestie?

+1

+1 Mam ten sam problem. Czy zrobiłeś jakieś postępy? – FlyingLemon

+1

@FlyingLemon: Byłem w stanie rozwiązać ten problem poprzez debugowanie prób i błędów. Moje kroki są wymienione poniżej. –

Odpowiedz

18

W końcu udało mi się wyeliminować rozbłysk flash, ale musiałem użyć Cordova, aby to zrobić. Oto kroki zrobiłem:

W Terminalu:

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 

Zastosowanie Finder, aby przejść do ~/path/to/project/platforms/ios/ i kliknij dwukrotnie projectname.xcodeproj otworzyć projekt w Xcode.

Następnie wszedłem i edytowałem obrazy. Możesz zrobić to na wiele sposobów. Oto co zrobiłem: W Xcode przejdź do Resources/splash/, kliknij obraz prawym przyciskiem myszy, aby go zmienić, wybierz Show in Finder i użyj narzędzi, które chcesz zmienić obrazy.

Po zakończeniu przejdź do Xcode i otwórz poziom główny config.xml (Wciąż nie wiesz, dlaczego są dwa pliki config.xml, ale chcesz mieć najdalszy folder w strukturze folderów). Zaktualizuj właściwość AutoHideSplashScreen do

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

Z menu głównego Xcode wybierz Product > Clean, a następnie Product > Build.

Pracowałem dla mnie wielokrotnie. Wówczas mogłem korzystać z metod navigator.splashscreen.show() i navigator.splashscreen.hide() z mojej aplikacji (która najwyraźniej nie reagowała bez przechodzenia przez wszystkie te kroki).

Mam nadzieję, że to pomoże!

+1

+1 ** To było to. ** Każda wtyczka musi zostać teraz ręcznie dodana do projektu za pomocą narzędzia CLI. PS: ** Działa również bez zdarzenia splashscreen.hide/show. ** – FlyingLemon

+2

Nadal nie mam pewności co do składni projektów Phonegap v Cordova, ponieważ dokumentacja internetowa odwołuje się do projektu Cordova. Kończyło się to dla mnie: 'phonegap lokalna wtyczka dodaj https://git-wip-us.apache.org/repos/asf/cordova-plugin-splashscreen.git' – avoision

+0

W moim przypadku po instalacji musiałem usunąć '' z SplashScreen '' węzeł w pliku config.xml (używam Cordova 3.3.0) – gregmatys

4

mam problem z wtyczkami lub jakiś problem z PhoneGap więc

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

nie działa dla mnie.

I poprawiony poprzez ustawienie Webview alfa 0, dopóki nie zostanie załadowany:

3 etapy:

  1. w pliku "CDVViewController.m" w metodzie "-(void)createGapView" I dodaje:
    self.webView.alpha = 0;
  2. w pliku "MainViewController.m" w metodzie "-(void)WebViewDidFinishLoad:(UIWebView*)theWebView" I dodaje: theVebView.alpha=1;
  3. w pliku "MainController.xib" zmieniłem tło na czarny (ustawić go w dowolnym kolorze wolisz)

Teraz zamiast białego ekranu. Flash mam czarną jeden aż zawartość jest w pełni załadowany. wystarczająco dobre dla mnie. (choć nie idealny)

nadzieję, że to pomaga ..

+0

To była jedyna rzecz, która zadziałała dla mnie, dzięki stosom :) – Rocklan

0

to działało f albo ja za pomocą build.phonegap.com

Krok 1: Dodano wtyczki Slashscreen do config.xml

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

Krok 2: Aktualizacja config.xml z tej preferencji.

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

Krok 3: Dodano wywołanie funkcji wtyczki do 'deviceready' imprezy

<script> 
    document.addEventListener("deviceready", onDeviceReady, false); 
    function onDeviceReady() { 
    navigator.splashscreen.hide() 
    } 
</script> 
1

spróbuj Dodaj

<param name="onload" value="true" /> do funkcji ekran powitalny w config.xml.

0

Po uzyskiwanie mad z wtyczką powitalny, dowiem się tego rozwiązania:

  1. w MainViewController.xib, dodać UIImageView (imgView).
  2. umieść w nim swój obraz powitalny, ustaw skalę do wypełnienia.
  3. W MainViewController.m override - (void) webViewDidFinishLoad (UIWebView *) theWebView
  4. dodać te kod po [Bardzo webViewDidFinishLoad: theWebView];

    [self.view sendSubviewToBack: imgView];

    imgView.hidden = TAK;

Powiązane problemy