3rd luglio, 2009

Durata di una Splash screen view sulla nostra applicazione iPhone

by Stefano Lodu

In questo secondo articolo vedremo il codice necessario che ci permettera’ di decidere per quanto tempo vogliamo che la nostra splash screen (loading page) rimanga attiva.

Quello che faremo in questo articolo e’ ricostruire la nostra splash screen in una sua view personalizzata e quindi ricominceremo il progetto dall’inizio senza tener conto alcuno dell’articolo mostrato in precedenza.

1) Creiamo con l’XCode il nostro progetto con template “View based application” con nome :”Splash”:


2) Ora importiano nelle Risorse del nostro progetto il file immagine che useremo come “Splash Screen” trascinandolo direttamente nella cartella “Resources”.


3) Il file grafico ora inserito dovremmo rinominarlo in “Default.png” facendo attenzione di indicare la “D” maiuscola per permettere all’XCode di interpretare questo file come splashScreen da usare durante il caricamento.


4) A questo punto carichiamo il nostro interface builder per andare a creare la nostra View dove applicheremo l’immagine Default.png di caricamento: premiamo quindi dalla nostra cartella di Resources il file SplashViewController.xib.


5) Ora a questa view aperta gia’ di default cambiamo il colore di Background che si trova nella view attributi come da immagine e trasciniamo dalla libreria una Label che denomineremo “Home Page” ad evidenziare che sara’ la view che apparira’ subito dopo il caricamento dell’applicazione e quindi della splash screen.


6) Ora creiamo una nuova view: prendiamo il componente “view” che si trova nella libreria dei componenti e lo trasciniamo all’interno della finestra “SplashScreenController.xib” cosi da aggiungere una seconda view destinata alla splash screen (premiamoci sopra velocemente 2 volte col mouse ed apparirà la nuova finestra “view”).


7) Adesso inseriamo nella view appena creata il componente “Image View” dalla libreria trascinandolo ed adattandolo alla view. Fatto questo utilizzando la finestra degli attributi selezioniamo (avendo selezionato il componente appena trascinato Image View) il menu a tendina “image” nel quale dovrebbe apparire unicamente il file grafico gia’ precaricato : Default.png e selezioniamolo:


8) Ora salviamo il progetto dall’interface builder e passiamo alla parte di stesura del codice.

9) Inseriamo In SplashAppDelegate.m alla fine del metodo applicationDidFinishLaunching la seguente riga:

[viewController showSplash];


10) Ora nel file SplashViewController.h inseriamo un IBoutlet e i due metodi di visualizzazione e di nascondere la spashscreen:

IBOutlet UIView *modelView;

- (void)showSplash;
- (void)hideSplash;


11) All’interno del file SplashViewController.m alla fine scriviamo il seguente codice destinato alla realizzazione del motodo di visualizzazione e sparizione:

-(void)showSplash
{

UIViewController *modalViewController = [[UIViewController alloc] init];

modalViewController.view = modelView;

[self presentModalViewController:modalViewController animated:NO];

[self performSelector:@selector(hideSplash) withObject:nil afterDelay:2.0];

}

//hide splash screen

- (void)hideSplash{

[[self modalViewController] dismissModalViewControllerAnimated:YES];

}


12) Salviamo tutto il progetto dal nostro XCode e proviamo intanto a compilarlo per vedere che sia tutto corretto. Ora dobbiamo legare l’ Outlet del modelview che abbiamo indicato nel codice tramite l’interface builder.

Selezioniamo dall’interface builder all’interno della finestra SplashViewController.xib il componente “File’s owner” dopodiche dalla finestra degli attributi alla voce “View Connections” selezioniamo e trasciniamo il pallino corrispondente a modelview all’interno della View che si trova nel file “SplashViewController.xib” destinata alla splash screen per creare il seguente legame:


Salviamo e compiliamo l’applicazione, se tutto e’ andato secondo procedura dovremmo vedere la nostra splash screen per alcuni secondi per poi sparire con movimento verticale.

Se volete provare con i files d’esempio potete scaricarli dal seguente link.

Per voi Sir. Lodux !

Developer . Tutorial Pratici | Add your comment

11 Comments. Subscribe to this post comments or trackback.

  1. Dzamir
    luglio 3rd, 2009

    Gli splash screen sono una delle cose più inutili e fastidiose di un programma. Potevano avere senso negli anni 90 quando i programmi ci mettevano una vita a caricare, ma ormai siamo quasi nel 2010, e i programmi nell’iphone caricano in pochi secondi. Tra l’altro la Apple sconsiglia questa pratica nella Mobile HIG.
    Poi a che serve comprare un iPhone 3gs ultra veloce che apre le applicazioni in un attimo se lo sviluppatore ti forza ad aspettare 2 secondi ogni volta che lanci il suo programma tanto per farti vedere quanto è bello il logo che ha realizzato? L’utente preferisce andare subito al sodo, e se può aprire il programma senza fronzoli è meglio.

  2. Stefano Lo Duca
    luglio 3rd, 2009

    Ciao Dzamir,
    sicuramente la tua opinione ha la sua verità e la rispetto, devo dire però che non e’ sempre cosi immediato ogni caricamento di qualsiasi applicazione… e scambiare una view nera (creando incertezze all’user) da un logo.. una parola.. l’idea che sta succedendo qualcosa per me e’ positiva… certo e’ che far aspettare 3 secondi appositamente solo per mostrare un logo probabilmente non lo trovo corretto nemmeno io… e controproducente

  3. Dzamir
    luglio 4th, 2009

    Probabilmente la soluzione migliore è mostrare il logo durante il caricamento del programma, subito dopo che la default.png scompare, ma durante il caricamento dell’interfaccia grafica. Se il programma deve caricare molti dati, impiegherà comunque altri 2-3 secondi dopo la default.png, e continuare a mostrare lo splash screen in questo caso mi sembra la migliore soluzione!

  4. Riccardo
    luglio 4th, 2009

    ciao io ho fatto una prova e l’ho messa. Poi ho cambiato idea ed ho eliminato sia dal progetto che dalla cartella relativa il file inserito ma la splash screen rimane lo stesso

  5. Stefano Lo Duca
    luglio 4th, 2009

    Ciao Riccardo, hai provato prima di ricompilarlo ha fare un clean all targets dal menu build ?

  6. Matteo
    luglio 5th, 2009

    Che tutorial inutili che inserite su questo sito!!!

  7. Dzamir
    luglio 5th, 2009

    @Matteo:
    In parte sono daccordo, ma spesso i tutorial più inutili sono in realtà quelli più utili.
    Quante volte ti è capitato di cercare cose stupide di programmazioe su internet solo perché non ti ricordi come si fa o magari ti rompe trovare una soluzione pure se sai come si fa perché non hai tempo?
    A questo punto vai su google e cerchi “splash screen iphone” e trovi la cosa già fatta senza dover perdere tempo.
    Invece le cose complicate alla fine te le implementi da solo perché fanno parte del cuore del tuo programma, e quindi sono difficili da “copiare” da altre parti.

  8. Matteo
    luglio 5th, 2009

    Io penso che se dovessi cercare su google come fare a implementare un semplice splash screen potrei smettere di fare app iPhone

  9. Matteo
    luglio 5th, 2009

    Tralasciando poi il fatto che (se non per giochi 2D/3D in cui vengono precaricati textures e suoni) lo splash screen e’ inutile e sconsigliato dalle linee guida Apple.
    L’immagine rappresentata dal file Default.png svolge gia’ il lavoro di rimanere attiva il tempo realmente necessario al caricamento dell’app. Mi dispiace dirlo perche’ vedo tanta buona volonta’, ma su iPhone and Go non ho mai trovato articoli realmente utili ad uno sviluppatore iPhone come invece trovo giornakmente su molti altri blog

  10. Stefano Lo Duca
    luglio 5th, 2009

    Ciao Matteo,
    il tuo primo commento preso cosi singolarmente non ti avrebbe fatto molto onore… aver poi voluto entrare piu’ nello specifico ha aiutato ad accettare quella che da un commento negativo solamente si può trasformare in una critica… certo resta sempre qualcosa di altamente soggettivo e quindi posso essere d’accordo con te che cio’ che viene fatto e spiegato qui adesso non e’ alla tua altezza.. Perche’ non ci aiuti anche tu ad aumentare il livello di difficolta’ per tutti quelli come te ?

  11. Gabry
    giugno 27th, 2010

    Io invece l’ho apprezzato molto questo tutorial. semplice, chiaro….. molto interessante.
    unica cosa: ho provato a seguire il tutorial. tutto funziona alla perfezione tranne una cosa. quando lo compilo e lo eseguo, la splash screen. dura 2 secondi, come da codice. dopo chiudo l’applicazione e la riapro dal simulatore senza compilarlo. a quel punto la splash screen dura neanche mezzo secondo, su iphone4. su iphone 3g/3gs non viene neanche.

    non riesco a capire il motivo. eppure ho copiato il codice pari pari.

    qualcuno sa la soluzione?

Leave A Reply