T#025 – Creiamo una Splash Screen e gestiamo la sua durata via codice




(Nessun voto)
Oggi vedremo come creare una Splash Screen e come personalizzare la sua durata di visualizzazione nella nostra applicazione. Premettiamo che come Splash Screen Apple raccomanda l’uso di una semplice immagine di dimensioni 320×480 pixel di nome Default.png da inserire nel bundle dell’app. Questa, sempre secondo le raccomandazioni Apple, dovrebbe contenere una rappresentazione dell’applicazione avviata, in modo da “illudere” l’utente con un’apparente riduzione dei tempi di caricamento dell’app stessa. Certo è che, nonostante le raccomandazioni Apple, potreste avere esigenze diverse e aver bisogno di costruire una vostra View personalizzata da usare ad esempio come Disclaimer. In questo caso, molto probabilmente, vorreste sicuramente poter gestire la sua durata, o anche solo la sua “cancellazione” tramite un tocco.
Vediamo una possibile soluzione. Apriamo Xcode, creiamo un nuovo progetto, dall’elenco dei template disponibili scegliamo “Tab Bar Application” e proseguiamo. Diamo un nome al nostro progetto, ad esempio “disclaimer”, scegliamo in che posizione salvarlo e andiamo avanti.
Eccoci con il nostro progetto pronto. Se clicchiamo ora su “Build and Run” otterremo un risultato come quello mostrato in figura qui in basso, ovvero, si aprirà direttamente la nostra app mostrando direttamente la UITabBar con i suoi elementi e la prima View:

Creiamo quindi la nostra Splash Screen personalizzata. Clicchiamo con il pulsante destro del mouse su “Classes” in “Groups & Files”, quindi su “Add” ed infine su “New File…”
Clicchiamo su “Cocoa Touch Class” sotto la sezione iPhone e tra i template di file scegliamo “UIViewController subclass”, accertiamoci che ci sia la spunta su “With XIB for user interface” e clicchiamo su “Next”. Nella nuova finestra diamo un nome, ad esempio mySplash, e mettiamo la spunta su Also create “mySplash.h” prima di confermare.
Apriamo il file “mySplash.h” e modifichiamo il codice come segue:
#import <UIKit/UIKit.h> @interface mySplash : UIViewController { } - (IBAction)dismissSelf:(id)sender; @end
Abbiamo semplicemente aggiunto la dichiarazione di un metodo, di nome dismissSelf, che assoceremo ad un pulsante creato tramite Interface Builder (IBAction indica proprio che si tratta di un’azione per IB), che ci permetterà di avviare l’applicazione e nascondere la splash tramite un semplice tocco sul pulsante.
Vedremo anche come gestire la scomparsa sella Splash Screen tramite un tempo predefinito e da noi scelto, controlleremo quindi la sua durata.
Passiamo al file “mySplash.m” e modifichiamo il codice come mostrato qui in basso:
- (IBAction)dismissSelf:(id)sender { [self dismissModalViewControllerAnimated:YES]; } - (void)dismiss { [self dismissModalViewControllerAnimated:YES]; } - (void)viewDidLoad { [super viewDidLoad]; [self performSelector:@selector(dismiss) withObject:self afterDelay:8]; }
Come vedete abbiamo usato una semplice istruzione che non fa altro che nascondere la Splash Screen. I due metodi sfruttano di fatto la stessa identica istruzione, solo che il primo lo assoceremo al pulsante, il secondo al nostro “timer”. Nel viewDidLoad potete notare come abbiamo settato un tempo di visualizzazione di 8 secondi per la splash, tramite “afterDelay:8″. Sarà questo valore che, una volta modificato, vi permetterà di aumentare o diminuire la durata della vostra Splash Screen.
Possiamo ora aprire il file mySplash.xib, facendo semplicemente doppio click sopra di esso, per iniziare a disegnare la nostra View personalizzata da usare come Splash Screen. Ricordate di inserire un pulsante al suo interno (UIButton). Cliccate quindi su “File’s Owner”, andate nella finestra “My Splash Connections” e collegate il metodo “dismissSelf:” con il tasto appena inserito. Ricordate di scegliere “Touch Up Inside” dal menù contestuale che si aprirà al rilascio del mouse sul pulsante. Terminato il vostro lavoro Salvate e chiudete Interface Builder.
Ancora poche righe di codice e il lavoro sarà terminato. Apriamo ora il file “…AppDelegate.h”, nel nostro caso “disclaimerAppDelegate.h” e importiamo il file di intestazione “mySplash.h”, semplicemente aggiungento la seguente istruzione subito sotto l’importazione dell’UIKit:
#import "mySplash.h"Salviamo e apriamo il rispettivo file “disclaimerAppDelegate.m”. Modifichiamo quindi il codice come segue:
#import "disclaimerAppDelegate.h" @implementation disclaimerAppDelegate @synthesize window; @synthesize tabBarController; - (void)applicationDidFinishLaunching:(UIApplication *)application { // Add the tab bar controller's current view as a subview of the window [window addSubview:tabBarController.view]; mySplash *splashView = [[mySplash alloc] initWithNibName:@"mySplash" bundle:nil]; splashView.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; [tabBarController presentModalViewController:splashView animated:NO]; [splashView release]; }
Come vedete abbiamo aggiunto quattro righe di codice, saranno proprio queste a mostrarci la nostra personalissima Splash Screen prima dell’avvio dell’app vera e propria, in questo caso basata su TabBar.
Possiamo salvare e cliccare su “Build and Run” per testare il nostro lavoro su iPhone Simulator o direttamente sul nostro dispositivo, iPhone o iPod Touch.
Ecco uno screenshot del nostro progetto in esecuzione:


Questo articolo è stato inserito da Rino Picardi il 20 febbraio 2010 alle 17:20, ed è archiviato in Tutorial Pratici. Puoi seguire le risposte con i feeds RSS 2.0. Oppure scrivere un commento o anche segnalare un trackback dal tuo sito.
-
Grazie per il tutorial, io ho il problema inverso da tutti gli altri, la mia splash screen viene visualizzata pero’ poi non scompare piu’ fino a che non premo il tasto.
Comunque si mancava il “[window makeKeyAndVisible];”
in didFinishLaunchingWithOptions, mi sa’ che pero’ e’ questa istruzione che poi non fa’ funzionare il contatore per far sparire la splash screen. -
- Segui i commenti di questo articolo
- 2. Objective-C: Le basi – parte 1
- 1. Cocoa e Cocoa Touch
- XCode e SVN: Prendiamo controllo dei nostri progetti
- Xcode 3.2.4 e iOS SDK 4.1 disponibili per il download
- T#069 – Localizzare applicazioni iPhone tramite NSLocalizedString
- T#068 – Progress view ed esecuzione di task in background
- Scaricare e installare vecchie versioni di Xcode
- T#064 – Rilevare le informazioni sul device in uso (modello, nome, sistema, versione)
- T#044 – Come implementare un database SQLite nelle nostre applicazioni
- T#037 – Accedere alle stesse variabili da classi diverse
















Utilissimo tutorial, la mia splash si toglie da sola
Con il 3G va benissimo, ma col 3GS mica tanto…