{"id":2182,"date":"2010-02-20T17:20:22","date_gmt":"2010-02-20T16:20:22","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=2182"},"modified":"2010-02-22T11:39:18","modified_gmt":"2010-02-22T10:39:18","slug":"t025-creiamo-una-splash-screen-e-gestiamo-la-sua-durata-via-codice","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/t025-creiamo-una-splash-screen-e-gestiamo-la-sua-durata-via-codice\/","title":{"rendered":"T#025 &#8211; Creiamo una Splash Screen e gestiamo la sua durata via codice"},"content":{"rendered":"<p><a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/02\/t025_IS.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/02\/t025_IS.png\" alt=\"Tutorial 025 - Splash Screen e tutorial all&#039;opera in iPhone Simulator\" title=\"t025_IS\" width=\"65\" height=\"124\" class=\"alignleft size-full wp-image-2184\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/02\/t025_IS.png 386w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/02\/t025_IS-156x300.png 156w\" sizes=\"auto, (max-width: 65px) 100vw, 65px\" \/><\/a> 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&#8217;uso di una semplice immagine di dimensioni 320&#215;480 pixel di nome <strong>Default.png<\/strong> da inserire nel bundle dell&#8217;app. Questa, sempre secondo le raccomandazioni Apple, dovrebbe contenere una rappresentazione dell&#8217;applicazione avviata, in modo da &#8220;illudere&#8221; l&#8217;utente con un&#8217;apparente riduzione dei tempi di caricamento dell&#8217;app stessa. Certo \u00e8 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 &#8220;cancellazione&#8221;  tramite un tocco.<!--more--><\/p>\n<p>Vediamo una possibile soluzione. Apriamo Xcode, creiamo un nuovo progetto, dall&#8217;elenco dei template disponibili scegliamo &#8220;Tab Bar Application&#8221; e proseguiamo. Diamo un nome al nostro progetto, ad esempio &#8220;disclaimer&#8221;, scegliamo in che posizione salvarlo e andiamo avanti.<\/p>\n<p>Eccoci con il nostro progetto pronto. Se clicchiamo ora su &#8220;Build and Run&#8221; otterremo un risultato come quello mostrato in figura qui in basso, ovvero, si aprir\u00e0 direttamente la nostra app mostrando direttamente la UITabBar con i suoi elementi e la prima View:<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/02\/T025_IB_01.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/02\/T025_IB_01.png\" alt=\"T#025 - Avvio programma senza splash screen\" title=\"T025_IB_01\" width=\"386\" height=\"742\" class=\"aligncenter size-full wp-image-2183\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/02\/T025_IB_01.png 386w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/02\/T025_IB_01-156x300.png 156w\" sizes=\"auto, (max-width: 386px) 100vw, 386px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Creiamo quindi la nostra Splash Screen personalizzata. Clicchiamo con il pulsante destro del mouse su &#8220;Classes&#8221; in &#8220;Groups &#038; Files&#8221;, quindi su &#8220;Add&#8221; ed infine su &#8220;New File&#8230;&#8221;<\/p>\n<p>Clicchiamo su &#8220;Cocoa Touch Class&#8221; sotto la sezione iPhone e tra i template di file scegliamo &#8220;UIViewController subclass&#8221;, accertiamoci che ci sia la spunta su &#8220;With XIB for user interface&#8221; e clicchiamo su &#8220;Next&#8221;. Nella nuova finestra diamo un nome, ad esempio mySplash, e mettiamo la spunta su Also create &#8220;mySplash.h&#8221; prima di confermare.<\/p>\n<p>Apriamo il file &#8220;mySplash.h&#8221; e modifichiamo il codice come segue:<\/p>\n<pre lang=\"objc\" escaped=\"true\">\r\n#import <UIKit\/UIKit.h>\r\n\r\n@interface mySplash : UIViewController {\r\n\r\n}\r\n\r\n- (IBAction)dismissSelf:(id)sender;\r\n\r\n@end\r\n<\/pre>\n<p>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&#8217;azione per IB), che ci permetter\u00e0 di avviare l&#8217;applicazione e nascondere la splash tramite un semplice tocco sul pulsante.<\/p>\n<p>Vedremo anche come gestire la scomparsa sella Splash Screen tramite un tempo predefinito e da noi scelto, controlleremo quindi la sua durata.<\/p>\n<p>Passiamo al file &#8220;mySplash.m&#8221; e modifichiamo il codice come mostrato qui in basso:<\/p>\n<pre lang=\"objc\" escaped=\"true\">\r\n- (IBAction)dismissSelf:(id)sender\r\n{\r\n        [self dismissModalViewControllerAnimated:YES];\r\n}\r\n\r\n- (void)dismiss\r\n{\r\n        [self dismissModalViewControllerAnimated:YES];\r\n}\r\n\r\n- (void)viewDidLoad {\r\n        [super viewDidLoad];\r\n        [self performSelector:@selector(dismiss) withObject:self afterDelay:8];\r\n}\r\n<\/pre>\n<p>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 &#8220;timer&#8221;. Nel viewDidLoad potete notare come abbiamo settato un tempo di visualizzazione di 8 secondi per la splash, tramite  &#8220;afterDelay:8&#8221;. Sar\u00e0 questo valore che, una volta modificato, vi permetter\u00e0 di aumentare o diminuire la durata della vostra Splash Screen.<\/p>\n<p>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 &#8220;File&#8217;s Owner&#8221;, andate nella finestra &#8220;My Splash Connections&#8221; e collegate il metodo &#8220;dismissSelf:&#8221; con il tasto appena inserito. Ricordate di scegliere &#8220;Touch Up Inside&#8221; dal men\u00f9 contestuale che si aprir\u00e0 al rilascio del mouse sul pulsante. Terminato il vostro lavoro Salvate e chiudete Interface Builder.<\/p>\n<p>Ancora poche righe di codice e il lavoro sar\u00e0 terminato. Apriamo ora il file &#8220;&#8230;AppDelegate.h&#8221;, nel nostro caso &#8220;disclaimerAppDelegate.h&#8221; e importiamo il file di intestazione &#8220;mySplash.h&#8221;, semplicemente aggiungento la seguente istruzione subito sotto l&#8217;importazione dell&#8217;UIKit:<\/p>\n<pre lang=\"objc\" escaped=\"true\">\r\n#import \"mySplash.h\"\r\n<\/pre>\n<p>Salviamo e apriamo il rispettivo file &#8220;disclaimerAppDelegate.m&#8221;. Modifichiamo quindi il codice come segue:<\/p>\n<pre lang=\"objc\" escaped=\"true\">\r\n#import \"disclaimerAppDelegate.h\"\r\n\r\n@implementation disclaimerAppDelegate\r\n\r\n@synthesize window;\r\n@synthesize tabBarController;\r\n\r\n- (void)applicationDidFinishLaunching:(UIApplication *)application {\r\n        \/\/ Add the tab bar controller's current view as a subview of the window\r\n        [window addSubview:tabBarController.view];\r\n\t\r\n\tmySplash *splashView = [[mySplash alloc] initWithNibName:@\"mySplash\" bundle:nil];\r\n\tsplashView.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;\r\n\t[tabBarController presentModalViewController:splashView animated:NO];\r\n\t[splashView release];\r\n}\r\n<\/pre>\n<p>Come vedete abbiamo aggiunto quattro righe di codice, saranno proprio queste a mostrarci la nostra personalissima Splash Screen prima dell&#8217;avvio dell&#8217;app vera e propria, in questo caso basata su TabBar.<\/p>\n<p>Possiamo salvare e cliccare su &#8220;Build and Run&#8221; per testare il nostro lavoro su iPhone Simulator o direttamente sul nostro dispositivo, iPhone o iPod Touch.<\/p>\n<p>Ecco uno screenshot del nostro progetto in esecuzione:<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/02\/t025_IS.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/02\/t025_IS.png\" alt=\"Tutorial 025 - Splash Screen e tutorial all&#039;opera in iPhone Simulator\" title=\"t025_IS\" width=\"386\" height=\"742\" class=\"aligncenter size-full wp-image-2184\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/02\/t025_IS.png 386w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/02\/t025_IS-156x300.png 156w\" sizes=\"auto, (max-width: 386px) 100vw, 386px\" \/><\/a><br \/>\n<\/center><\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.av-shop.it\/vmchk\/Cavi-e-accessori-MAC\/View-all-products.html\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/01\/AvShop_Banner.jpg\" alt=\"AvShop Banner\" title=\"AvShop_Banner\" width=\"400\" height=\"60\" class=\"aligncenter size-full wp-image-1917\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/01\/AvShop_Banner.jpg 400w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/01\/AvShop_Banner-300x45.jpg 300w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\" \/><\/a><br \/>\n<\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Oggi vedremo come creare una Splash Screen e come personalizzare la sua durata di visualizzazione nella nostra&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[118,73,119,120,47,23],"class_list":["post-2182","post","type-post","status-publish","format-standard","hentry","category-tutorial-pratici","tag-durata-splash-screen","tag-splash-screen","tag-timer","tag-tutorial","tag-uitabbar","tag-xcode"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/2182","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=2182"}],"version-history":[{"count":4,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/2182\/revisions"}],"predecessor-version":[{"id":2188,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/2182\/revisions\/2188"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=2182"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=2182"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=2182"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}