{"id":6079,"date":"2011-03-17T13:03:24","date_gmt":"2011-03-17T12:03:24","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=6079"},"modified":"2014-02-04T13:27:48","modified_gmt":"2014-02-04T12:27:48","slug":"tips018-creare-animazioni-di-oggetti-tramite-metodi-block-based","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/tips018-creare-animazioni-di-oggetti-tramite-metodi-block-based\/","title":{"rendered":"TIPS#018 &#8211; Creare animazioni di oggetti tramite metodi &#8220;block-based&#8221;"},"content":{"rendered":"<p>Ciao a tutti, come promesso nel mio <a href=\"http:\/\/www.devapp.it\/wordpress\/l015-programmazione-block-based\u201d-i-blocchi-in-objective-c.html\" target=\"_blank\">precedente articolo<\/a> dedicato ai Blocchi in Objective-C, vi presento oggi un esempio concreto tramite un veloce Tips di programmazione in Xcode, nello specifico vedremo una soluzione alternativa al &#8220;<a href=\"http:\/\/www.devapp.it\/wordpress\/tips015-creare-animazioni-per-i-nostri-oggetti-in-3-passi.html\" target=\"_blank\">TIPS#015 \u2013 Creare animazioni per i nostri oggetti in 3 passi<\/a>&#8221; scritto tempo fa da Francesco Burelli. Vedremo come creare l&#8217;animazione di un oggetto di classe UIView o sottoclasse della stessa (praticamente tutti gli oggetti presenti nell&#8217;interfaccia delle nostre app), con l&#8217;utilizzo di una sola riga di codice, appunto basata sull&#8217;uso dei blocchi.<!--more--><\/p>\n<p>In parole povere, gli argomenti pesenti nelle 6 righe di codice utilizzate nel precedente tips (che vi posto per comodit\u00e0):<\/p>\n<pre lang=\"objc\" line=\"1\" escaped=\"true\">\r\n[UIView beginAnimations:@\"animation\" context:NULL];\r\n[UIView setAnimationDuration:0.3];\r\n[UIView setAnimationDelegate:self];\r\n[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];\r\n[theView setAlpha:0];\r\n[UIView commitAnimations];\r\n<\/pre>\n<p>si possono condensare in un&#8217;unica riga di codice:<\/p>\n<pre lang=\"objc\" line=\"1\" escaped=\"true\">\r\n[UIView animateWithDuration:0.3\r\n    animations:^{\r\n        [theView setAlpha:0];\r\n    }\r\n    completion:^(BOOL finshed) {\r\n        if (finished) {\r\n\t    [self performSelector:\r\n\t    @selector(animationDidStop:object:)];\r\n        }\r\n    }\r\n];\r\n<\/pre>\n<p>Le istruzioni che definiscono cosa deve fare l&#8217;animazione e quelle che devono essere eseguite alla fine della stessa sono racchiuse in due blocchi di codice con sintassi:<\/p>\n<p><strong>^(argomenti) {codice}<\/strong><\/p>\n<p>Lo scopo di questo veloce tips \u00e8 proprio quello di mostrarvi questo tipo di sintassi sfruttando un piccolo e semplice esempio pratico.<\/p>\n<p>Nel nostro caso il primo blocco \u00e8 privo di argomenti, il secondo ha invece un argomento di tipo BOOL che indicher\u00e0 se l&#8217;animazione \u00e8 terminata o meno (YES o NO).<\/p>\n<p>Come vedete niente di complicatissimo \ud83d\ude42<\/p>\n<p>In uno dei prossimi articoli affronteremo l&#8217;argomento blocchi in un tutorial sulle applicazioni multithreading.<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/03\/TIPS-018-Creare-animazioni-d-oggetti-con-una-sola-riga-di-codice-objective-c.zip\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3385\" title=\"download_icon\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/05\/download_icon.png\" alt=\"Icona Download\" width=\"33\" height=\"40\" \/><\/a> Per dimostrarvi che con questa riga di codice si ottiene esattamente lo stesso risultato, ho modificato proprio il codice utilizzato come esempio da Francesco nel suo articolo (<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/03\/TIPS-018-Creare-animazioni-d-oggetti-con-una-sola-riga-di-codice-objective-c.zip\" target=\"_blank\">potete scaricarlo da qui<\/a>).<br \/>\n<\/center><\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.serverplan.com\/it\/powermail_email_hosting_professionale.html\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/03\/serverplan-pm-468x60.gif\" alt=\"banner serverplan 468x60\" title=\"serverplan-pm-468x60\" width=\"468\" height=\"60\" class=\"aligncenter size-full wp-image-6279\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/03\/serverplan-pm-468x60.gif 468w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/03\/serverplan-pm-468x60-300x38.gif 300w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2011\/03\/serverplan-pm-468x60-150x19.gif 150w\" sizes=\"auto, (max-width: 468px) 100vw, 468px\" \/><\/a><br \/>\n<\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ciao a tutti, come promesso nel mio precedente articolo dedicato ai Blocchi in Objective-C, vi presento oggi&#8230;<\/p>\n","protected":false},"author":542,"featured_media":10898,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[105],"tags":[455,603,456,602,230,285],"class_list":["post-6079","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tips-tricks","tag-animazione-oggetti-iphone","tag-blocchi","tag-creare-animazioni-iphone","tag-francesco-guida","tag-iphone-snippets","tag-tips-iphone"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/6079","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\/542"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=6079"}],"version-history":[{"count":24,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/6079\/revisions"}],"predecessor-version":[{"id":10480,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/6079\/revisions\/10480"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media\/10898"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=6079"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=6079"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=6079"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}