{"id":1784,"date":"2010-01-19T12:34:20","date_gmt":"2010-01-19T11:34:20","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=1784"},"modified":"2012-02-06T18:45:30","modified_gmt":"2012-02-06T17:45:30","slug":"t021-creiamo-un-effetto-di-transizione-tra-uiview","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/t021-creiamo-un-effetto-di-transizione-tra-uiview\/","title":{"rendered":"T#021 &#8211; Creiamo un effetto di transizione tra UIView"},"content":{"rendered":"<p>In questo nuovo tutorial vedremo come passare da una view ad un&#8217;altra utilizzando un collegamento (ad esempio un pulsante) presente nella prima View e come dalla seconda Vista, possiamo ritornare nuovamente alla prima. Applicheremo a tutto questo un piccolo effetto di transizione che sicuramente risulter\u00e0 pi\u00f9 piacevole in fase di esecuzione del programma.<\/p>\n<p>L\u2019effetto che implementeremo \u00e8 una semplice rotazione della vista come mostrato in figura:<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/01\/t021_image01b.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/01\/t021_image01b.png\" alt=\"T#021 - Immagini effetto animato\" title=\"t021_image01b\" width=\"600\" height=\"288\" class=\"aligncenter size-full wp-image-1785\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/01\/t021_image01b.png 600w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/01\/t021_image01b-300x144.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><br \/>\n<\/center><!--more--><\/p>\n<p>Passiamo subito alla parte operativa.<\/p>\n<p>Dal menu File creiamo un nuovo file XIB (File -> New File \u2013> User Interface -> View Xib) ed assegniamogli un nome (nel nostro caso lo chiameremo &#8220;Info&#8221;).<\/p>\n<p>Sempre dal menu file creiamo i file che controlleranno la nostra vista il file di intestazione .h e quello di implementazione .m: File -> New File -> UiViewController SubClass. Chiamiamo anche questi file &#8220;Info&#8221;.<br \/>\nOtterremo cos\u00ec 3 nuovi file: Info.xib, Info.h ed Info.m.<\/p>\n<p>Apriamo il file Xib ed occupiamoci subito di assegnare al File\u2019s Owner la Class Identity, che nel nostro caso sar\u00e0 la classe appena creata &#8220;Info&#8221;. <\/p>\n<p>Per chi non fosse ancora pratico ripetiamo i passaggi da compiere:<br \/>\ncliccate due volte sul file Info.Xib, si aprir\u00e0 una finestra con una lista di oggetti (Files Ownwer, Fist Responder, View). Selezioniamo File\u2019s Owner e dal menu Tool selezioniamo Identity Inspector. Alla voce Class della sezione Class Identity inseriamo il nome della nostra classe, cio\u00e8 Info).<\/p>\n<p>Apriamo ora la view e personalizziamola come vogliamo.<\/p>\n<p>Inseriamo, dalla libreria, una Navigation Bar (menu Tools -> Library) ed un Bar Button Item  che sar\u00e0 il &#8220;tastino&#8221; che consentir\u00e0 all&#8217;utente di passare alla seconda View.<\/p>\n<p>Apriamo nuovamente la Libreria ed inseriamo nel nostro file Info.Xib una nuova UIVIew, quindi personalizziamola. Sar\u00e0 proprio questa la seconda vista che andremo a caricare. Inseriamo anche qui una Navigation Bar ed un Bar Button Item che sar\u00e0 l&#8217;elemento che, alla pressione, ci permetter\u00e0 di ritornare alla vista precedente<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/01\/t021_quarta.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/01\/t021_quarta.png\" alt=\"t021 - quarta immagine Interface Builder\" title=\"t021_quarta\" width=\"600\" height=\"429\" class=\"aligncenter size-full wp-image-1788\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/01\/t021_quarta.png 600w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/01\/t021_quarta-300x214.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Fatta questa operazione passiamo a modificare i file .h e .m.<\/p>\n<p>Nel file di intestazione .h dichiariamo una nuova view (con un nome che identifichi la seconda view da richiamare) in questo modo:<\/p>\n<pre lang=\"objc\" escaped=\"true\">\r\nUIView *istruzioni;\r\n<\/pre>\n<p>e  settiamola come IBOutlet in questo modo :<\/p>\n<pre lang=\"objc\" escaped=\"true\">\r\n@property (retain,nonatomic) IBOutlet UIView *istruzioni;\r\n<\/pre>\n<p>dichiariamo infine in due metodi che useremo per passare da una vista all&#8217;altra e che assegneremo ai pulsanti:<\/p>\n<pre lang=\"objc\" escaped=\"true\">\r\n-(void)showIstruzioniPage:(id)sender;\r\n-(void)removeIstruzioniPage:(id)sender;\r\n<\/pre>\n<p>Ritorniamo nuovamente al nostro Info.xib, facciamo doppio-clic sulla prima View e selezionando il File&#8217;s Owner dal menu Tools accediamo al Connection Inspector.<\/p>\n<p>Alla voce Outlets troveremo delle nuove voci, colleghiamo quindi la vista &#8220;istruzioni&#8221; (che costituisce la nostra seconda vista) alla seconda UIView creata in precedenza ed il metodo &#8220;showIstruzioniPage&#8221; al &#8220;Bar Button Item&#8221; inserito in precedenza nella Navigation della prima UIView.<\/p>\n<p>Apriamo ora la seconda View  e colleghiamo il metodo &#8220;RemoveIstruzioniPage&#8221; al tasto, creato sulla navigation bar, che avremo designato come l&#8217;elemento che ci permetter\u00e0 di ritornare nuovamente alla vista precedente<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/01\/t021_quinta.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/01\/t021_quinta.png\" alt=\"t021 - Quinta immagine Interface Builder\" title=\"t021_quinta\" width=\"600\" height=\"386\" class=\"aligncenter size-full wp-image-1789\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/01\/t021_quinta.png 600w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/01\/t021_quinta-300x193.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Il lavoro \u00e8 quasi terminato, non resta che modificare il file di implementazione Info.m in questo modo:<\/p>\n<pre lang=\"objc\" escaped=\"true\">\r\n-(void)removeIstruzioniPage:(id)sender\r\n{\r\n\t[UIView beginAnimations:nil context:nil];\r\n\t[UIView setAnimationDuration:1.0];\r\n\t[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight\r\n\t\t\t\t\t\t   forView:[self view]\r\n\t\t\t\t\t\t\t cache:YES];\r\n\t[istruzioni removeFromSuperview];\r\n\r\n\t[UIView commitAnimations];\t\t\r\n}\r\n\r\n-(void)showIstruzioniPage:(id)sender\r\n{\r\n\t\r\n\t[UIView beginAnimations:nil context:nil];\r\n\t[UIView setAnimationDuration:1.0];\r\n\t[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight\r\n\t\t\t\t\t\t   forView:[self view]\r\n\t\t\t\t\t\t\t cache:YES];\r\n\t[[self view] addSubview:istruzioni];\r\n\t[UIView commitAnimations];\t\r\n\r\n}\r\n<\/pre>\n<p>I metodi esposti sopra contengono due istruzioni fondamentali:<\/p>\n<pre lang=\"objc\" escaped=\"true\">\r\n[[self view] addSubview:istruzioni];\r\n<\/pre>\n<p>e<\/p>\n<pre lang=\"objc\" escaped=\"true\">\r\n[istruzioni removeFromSuperview];\r\n<\/pre>\n<p>che scritte da sole permetterebbero ugualmente di passare da una vista all\u2019altra.<\/p>\n<p>Il restante codice, invece, ci permette di creare e applicare una piccola animazione per rendere il passaggio da una vista all&#8217;altra un po&#8217; pi\u00f9 gradevole e meno netto.<\/p>\n<p>Alla prossima.<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.creact.it\/friends-phone-locator\/\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2012\/02\/FriendPhoneLocator-Banner.png\" alt=\"Friend Phone Locator Banner\" title=\"FriendPhoneLocator_Banner\" width=\"400\" height=\"60\" class=\"aligncenter size-full wp-image-1917\" \/><\/a><br \/>\n<\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In questo nuovo tutorial vedremo come passare da una view ad un&#8217;altra utilizzando un collegamento (ad esempio&#8230;<\/p>\n","protected":false},"author":46,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[90,91,5,4,1,63],"class_list":["post-1784","post","type-post","status-publish","format-standard","hentry","category-tutorial-pratici","tag-animazioni","tag-effetto-transizione","tag-objective-c","tag-programmazione","tag-tutorial-pratici","tag-uiview"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/1784","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\/46"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=1784"}],"version-history":[{"count":9,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/1784\/revisions"}],"predecessor-version":[{"id":8556,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/1784\/revisions\/8556"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=1784"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=1784"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=1784"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}