{"id":4520,"date":"2010-10-04T10:06:36","date_gmt":"2010-10-04T08:06:36","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=4520"},"modified":"2010-10-04T10:06:36","modified_gmt":"2010-10-04T08:06:36","slug":"t074-come-inserire-una-uinavigationbar-personalizzata-nelle-nostre-applicazioni-iphone","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/t074-come-inserire-una-uinavigationbar-personalizzata-nelle-nostre-applicazioni-iphone\/","title":{"rendered":"T#074 &#8211; Come inserire una UINavigationBar personalizzata nelle nostre applicazioni iPhone"},"content":{"rendered":"<p><a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-22.11.08.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-4527\" title=\"Schermata 2010-10-01 a 22.11.08\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-22.11.08.png\" alt=\"\" width=\"168\" height=\"38\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-22.11.08.png 335w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-22.11.08-300x67.png 300w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-22.11.08-150x33.png 150w\" sizes=\"auto, (max-width: 168px) 100vw, 168px\" \/><\/a> In moltissime applicazioni che si trovano in AppStore potete notare che la barra di navigazione (UINavigationBar per noi programmatori) non \u00e8 la classica blu che Apple mette a disposizione, ma \u00e8 personalizzata con colori o loghi caratteristici dell&#8217;applicazione.<\/p>\n<p>In questo tutorial vedremo come utilizzare una classe apposita, &#8220;CustonNavigationBar&#8221;, che ci permetter\u00e0 di inserire una immagine personale come navigation bar.<!--more--><\/p>\n<h4>1. Inseriamo la classe nel nostro progetto<\/h4>\n<p>Questo tutorial lo eseguiremo partendo da un progetto gi\u00e0 fatto. Per il nostro scopo utilizziamo il semplice lettore di feed RSS che abbiamo creato utilizzando <a href=\"http:\/\/www.devapp.it\/wordpress\/t043-creiamo-il-nostro-lettore-di-feed-rss-per-iphone.html\" target=\"_blank\">questo nostro tutorial<\/a>. Scaricate il file di progetto ed apritelo in XCode.<\/p>\n<p style=\"text-align: left;\">La prima cosa da fare \u00e8 inserire nel progetto la classe CustomNavigationBar, che potete scaricare a <a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/CustomNavigationBar.zip\" target=\"_blank\">questo indirizzo.<\/a><\/p>\n<p style=\"text-align: left;\">Scompattate l&#8217;archivio e inserite i due file della classe nel nostro progetto.<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-21.39.01.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4521\" title=\"Schermata 2010-10-01 a 21.39.01\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-21.39.01.png\" alt=\"\" width=\"414\" height=\"388\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-21.39.01.png 414w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-21.39.01-300x281.png 300w\" sizes=\"auto, (max-width: 414px) 100vw, 414px\" \/><\/a><\/p>\n<p style=\"text-align: left;\">Se avete eseguito tutto correttamente avrete i seguenti file nel vostro progetto:<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-21.39.21.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4522\" title=\"Schermata 2010-10-01 a 21.39.21\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-21.39.21.png\" alt=\"\" width=\"283\" height=\"377\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-21.39.21.png 283w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-21.39.21-225x300.png 225w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-21.39.21-112x150.png 112w\" sizes=\"auto, (max-width: 283px) 100vw, 283px\" \/><\/a><\/p>\n<h4>2. Inseriamo un&#8217;immagine adeguata<\/h4>\n<p>Ora dobbiamo inserire un&#8217;immagine che possa funzionare senza problemi nella Navigation Bar. Per fare ci\u00f2 utilizziamo un file di dimensione 320&#215;44, che si adatter\u00e0 alla perfezione. Ecco quello che utilizzeremo noi:<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/navBar.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4523\" title=\"navBar\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/navBar.png\" alt=\"\" width=\"320\" height=\"44\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/navBar.png 320w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/navBar-300x41.png 300w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/navBar-150x20.png 150w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/a><\/p>\n<p>Inserite anche questa immagine nel vostro progetto, come fatto in precedenza per la classe.<\/p>\n<h4>3. Assegniamo alla Navigation Bar la classe CustomNavigationBar<\/h4>\n<p>Dobbiamo far si che la UINavigationBar della nostra applicazione sia gestita dalla classe CustomNavigationBar. Apriamo il file &#8220;MainWindow.xib&#8221;, si aprir\u00e0 Interface Builder.<\/p>\n<p>Dal &#8220;Pannello dei Documenti&#8221; espandiamo l&#8217;elemento Navigation Controller e selezioniamo la Navigation Bar:<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-21.49.09.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4524\" title=\"Schermata 2010-10-01 a 21.49.09\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-21.49.09.png\" alt=\"\" width=\"431\" height=\"432\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-21.49.09.png 431w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-21.49.09-150x150.png 150w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-21.49.09-300x300.png 300w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-21.49.09-92x92.png 92w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-21.49.09-64x64.png 64w\" sizes=\"auto, (max-width: 431px) 100vw, 431px\" \/><\/a><\/p>\n<p>Spostiamoci, poi, nell&#8217;Identity Inspector e nel campo Classes impostiamo &#8220;CustomNavigationBar&#8221;:<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-21.50.57.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4525\" title=\"Schermata 2010-10-01 a 21.50.57\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-21.50.57.png\" alt=\"\" width=\"301\" height=\"335\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-21.50.57.png 301w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-21.50.57-269x300.png 269w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-21.50.57-134x150.png 134w\" sizes=\"auto, (max-width: 301px) 100vw, 301px\" \/><\/a><\/p>\n<p>Spostiamoci, infine, nell&#8217;oggetto Navigation Controller. Prendiamo il suo &#8220;delegate&#8221; e colleghiamolo con l&#8217;oggetto Navigation Controller:<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-22.12.44.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-4528\" title=\"Schermata-2010-10-01-a-22.12.44\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-22.12.44-300x167.png\" alt=\"\" width=\"300\" height=\"167\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-22.12.44-300x167.png 300w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-22.12.44-150x83.png 150w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-22.12.44.png 685w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Abbiamo compleato questa parte. Salviamo tutto e chiudiamo pure Interface Builder.<\/p>\n<h4>4. Esaminiamo la classe CustomNavigationBar<\/h4>\n<p>Prima di esaminare la classe che ci interessa, andate nel file &#8220;RootViewController.m&#8221; e nel metodo &#8220;viewDidLoad&#8221; cambiate la seguente istruzione:<\/p>\n<pre lang=\"objc\" line=\"1\" escaped=\"true\">\r\nself.title = @\"back\";\r\n<\/pre>\n<p>questo perch\u00e8 il titolo non sar\u00e0 visualizzato nella navigation bar, ma sar\u00e0 invece utilizzato quando l&#8217;utente seleziona una cella (per il bottone che permette di tornare alla vista precedente).<\/p>\n<p>Spostiamoci nel file &#8220;CustomNavigationBar.m&#8221;, qui troviamo il comportamento della nostra classe. Nel metodo &#8220;drawRect&#8221; trovate le seguenti istruzioni:<\/p>\n<pre lang=\"objc\" line=\"1\" escaped=\"true\">-(void)drawRect:(CGRect)rect{\r\n\tUIImage *image = [[UIImage imageNamed:@\"navBar.png\"] retain];\r\n\t[image drawInRect:rect];\r\n\t[image release];\r\n}<\/pre>\n<p>Come vedete la prima \u00e8 quella che imposta l&#8217;immagine da visualizzare. Se avete inserito un&#8217;immagine con un nome diverso da &#8220;navBar.png&#8221; qui \u00e8 il posto corretto per modificarlo. Una soluzione particolare sarebbe anche quella di scaricare l&#8217;immagine da un sito web, che vi permetterebbe di avere una barra modificabile da remoto.<\/p>\n<p>C&#8217;\u00e8 poi un metodo che nel nostro tutorial \u00e8 praticamente inutilizzato, ma potrebbe essere invece utile per i vostri scopi. Esso \u00e8 il seguente:<\/p>\n<pre lang=\"objc\" line=\"1\" escaped=\"true\">\r\n- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{\r\n\r\n\t\/\/NSString *title = [viewController title];\r\n\tUILabel *myTitleView = [[UILabel alloc] init];\r\n\t[myTitleView setFont:[UIFont boldSystemFontOfSize:18]];\r\n\t[myTitleView setTextColor:[UIColor yellowColor]];\r\n\t\/\/myTitleView.text = title;\r\n\r\n\tmyTitleView.backgroundColor = [UIColor clearColor];\r\n\t[myTitleView sizeToFit];\r\n\tviewController.navigationItem.titleView = myTitleView;\r\n\t[myTitleView release];\r\n\r\n\tviewController.navigationController.navigationBar.tintColor = [UIColor colorWithRed:140.0\/255.0 green:145.0\/255.0 blue:147.0\/255.0 alpha:0.8];\r\n}\r\n<\/pre>\n<p>Qui, volendo, potete impostare il colore, il font e la dimensione del testo che viene visualizzato nella Navigation Bar (il &#8220;title&#8221; che solitamente impostiamo via codice). Se avete inserito una immagine che contiene solo lo sfondo e non un logo, potete abilitare quelle istruzioni e modificare l&#8217;aspetto del testo a vostro piacere.<\/p>\n<p>Noi abbiamo solo decommentato due istruzioni, in modo che non venga visualizzato nessun testo nella navigation bar.<\/p>\n<p>L&#8217;ultima istruzione, infine, imposta il colore che viene utilizzato nei bottoni presenti sulla Navigation Bar, come quello per tornare alla schermata precedente quando si entra in una riga:<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-22.11.08.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4527\" title=\"Schermata 2010-10-01 a 22.11.08\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-22.11.08.png\" alt=\"\" width=\"335\" height=\"75\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-22.11.08.png 335w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-22.11.08-300x67.png 300w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-22.11.08-150x33.png 150w\" sizes=\"auto, (max-width: 335px) 100vw, 335px\" \/><\/a><\/p>\n<p>Abbiamo concluso! Avviate il progetto e godetevi la vostra barra di navigazione personalizzata!<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-22.16.19.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4529\" title=\"Schermata 2010-10-01 a 22.16.19\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-22.16.19.png\" alt=\"\" width=\"482\" height=\"664\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-22.16.19.png 482w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-22.16.19-217x300.png 217w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/Schermata-2010-10-01-a-22.16.19-108x150.png 108w\" sizes=\"auto, (max-width: 482px) 100vw, 482px\" \/><\/a><\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/SimpleRSSreader-con-CustomNavigationBar.zip\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/05\/download_icon.png\" alt=\"\" width=\"33\" height=\"40\" align=\"middle\" \/><\/a> Se avete problemi con il tutorial,\u00a0<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/10\/SimpleRSSreader-con-CustomNavigationBar.zip\">questo \u00e8 il nostro file di progetto.<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In moltissime applicazioni che si trovano in AppStore potete notare che la barra di navigazione (UINavigationBar per&#8230;<\/p>\n","protected":false},"author":254,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[216,426,427,428,122],"class_list":["post-4520","post","type-post","status-publish","format-standard","hentry","category-tutorial-pratici","tag-andrea-busi","tag-custom-navigation-bar","tag-custom-uinavigation","tag-personalizzare-navigation-bar","tag-uinavigationbar"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/4520","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\/254"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=4520"}],"version-history":[{"count":8,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/4520\/revisions"}],"predecessor-version":[{"id":4545,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/4520\/revisions\/4545"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=4520"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=4520"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=4520"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}