<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Stefano e Lori Blog &#187; Coccoa</title>
	<atom:link href="http://www.slweb.it/wp/tag/coccoa/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.slweb.it/wp</link>
	<description>Famiglia, tecnologia, fotografia e musica... cioè la mia vita!</description>
	<lastBuildDate>Mon, 17 Oct 2011 07:21:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>(Studiando cocoa) Currency converter Parte 2°</title>
		<link>http://www.slweb.it/wp/23102009/studiando-cocoa-currency-converter-parte-2%c2%b0/</link>
		<comments>http://www.slweb.it/wp/23102009/studiando-cocoa-currency-converter-parte-2%c2%b0/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 21:46:52 +0000</pubDate>
		<dc:creator>stefano</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Coccoa]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://www.slweb.it/wp/?p=606</guid>
		<description><![CDATA[Nella prima parte abbiamo creato l&#8217;oggetto &#8220;Model&#8221; della applicazione Currency converter, i questa seconda parte creeremo l&#8217;oggetto &#8220;View&#8221; cioè l&#8217;interfaccia grafica dell&#8217;applicazione. Per creare l&#8217;interfaccia grafica il tool di sviluppo Xcode mette a disposizione un&#8217;applicazione chiamata Interface Builder. IB ci permette di creare in modo visuale un&#8217;interfaccia grafica funzionante attraverso una libreria di oggetti grafici [...]]]></description>
			<content:encoded><![CDATA[<p>Nella prima parte abbiamo creato l&#8217;oggetto &#8220;Model&#8221; della applicazione Currency converter, i questa seconda parte creeremo l&#8217;oggetto &#8220;View&#8221; cioè l&#8217;interfaccia grafica dell&#8217;applicazione. Per creare l&#8217;interfaccia grafica il tool di sviluppo Xcode mette a disposizione un&#8217;applicazione chiamata Interface Builder. IB ci permette di creare in modo visuale un&#8217;interfaccia grafica funzionante attraverso una libreria di oggetti grafici standard predefiniti (UI design) e una finestra ispettiva dove possiamo impostare le proprietà di ogni oggetto. IB permette inoltre di creare i collegamenti fra i vari oggetti grafici.</p>
<p><strong>I file Nib</strong></p>
<p>Ogni applicazione Cocoa dotata di interfaccia grafica ha almeno un Nib file. Il Nib file principale viene caricato automaticamente all&#8217;avvio dell&#8217;applicazione e generalmente contiene un menu e una finestra con altri oggetti sopra.</p>
<p>Ogni Nib file contiene:</p>
<ul>
<li><strong>Archivio degli oggetti</strong>: esso contiene le informazioni sugli oggetti come le dimensioni, il posizionamento e la posizione nella gerarchia degli oggetti. Il livello più alto delle gerchia degli oggetti archiviati è occupato da File’s Owner object, una specie di proxy che in fase di runtime diventa l&#8217;oggetto padrone del Nib file.</li>
<li><strong>Immaggini</strong>: le immagini che compongono la nostra interfaccia utente come ad esempio bottoni o pulsanti.</li>
<li><strong>Class references</strong>: IB conserva le informazioni sugli oggetti che compongono l&#8217;interfaccia ma non conosce le classi che avete sviluppato, come ad esempio la nostra classe Converter che rappresenta il &#8220;model&#8221; della nostra applicazione, perchè non può accedere al loro codice. Per ogniuna di queste classi IB mette a disposizione una specie di oggetto proxy a cui vengono applicate le informazioni sulla classe.</li>
<li><strong>Connection information</strong>: le informazioni circa i collegamenti fra i vari oggetti che compongono l&#8217;interfaccia.</li>
</ul>
<p><strong>Apriamo Interface Builder</strong></p>
<p>Per aprire il IB è sufficiente fare doppio click sul file MainMenu.xib nella finestra di progetto di Xcode. Currency Converter ha una finestra principale (Main Window) sulla quale si eseguono tutte le operazioni che svolge l&#8217;applicazione. IB crea per noi un Main Menu con alcuni menu di default e una finestra che rappresenta la Main Windows di Currency Converter. L&#8217;interfaccia di IB è costituita poi da altre 3 finestre:</p>
<ul>
<li><strong>Library</strong>: contiene tutti gli oggetti, le classi e i media che possiamo utilizzare nella nostra applicazione. Possiamo inserire nella libreria oggetti, classi e  media personalizzati.</li>
<li><strong>Attributes o inspector</strong>: contiene gli attributi dell&#8217;oggetto correntemente selezionato. Se ad esempio selezionate la nostra Main Window nella finestra compariranno tutti i relativi attributi.</li>
<li><strong>La finestra principal</strong>e: quale file nib è aperto e quali sono gli oggetti che lo compongono.</li>
</ul>
<div id="attachment_610" class="wp-caption aligncenter" style="width: 590px"><a href="http://www.slweb.it/wp/wp-content/uploads/2009/10/interface_builder.jpg"><img class="size-full wp-image-610" title="Interface Builder" src="http://www.slweb.it/wp/wp-content/uploads/2009/10/interface_builder.jpg" alt="Come si presenta IB appena lo apro cliccando su MainMenu.xib Di Currency Converter" width="580" height="343" /></a><p class="wp-caption-text">Come si presenta IB appena lo apro cliccando su MainMenu.xib Di Currency Converter</p></div>
<p>Conviene dare uno sguardo a IB per familiarizzare con le sue componenti prima di andare avanti, io ci ho passato un paio d&#8217;ore giocando con gli oggetti e cercando di capirne le caratteristiche attraverso l&#8217;ispector. Magari fatelo su un progetto vuoto.</p>
<p><strong>Modifichiamo la Main Window</strong></p>
<p>Possiamo ridimensionare la finestra manualmente semplicemente afferrandola per l&#8217;angolo in basso a destra. Selezionando la finestra e facendo clic sull&#8217;iconcina a forma di righello nell&#8217;ispector possiamo impostare nei campi width e height i valori 400 e 200 per dimensionare correttamente la finestra. Possiamo inoltre scegliere la posizione iniziale della finestra, che normalmente dovrebbe essere in alto a sinistra.</p>
<p>Cliccando sulla prima iconcina nell&#8217;ispector possiamo impostare gli attributi della finestra fra cui il titolo. IB ha già impostato questo valore con il nome dell&#8217;applicazione, questo è sicuramente un buon titolo in questo caso quindi lo lasciamo inalterato.</p>
<p><strong>Inseriamo i textField</strong></p>
<p>Nella finestra libreria selezioniamo Objects per mostrare gli oggetti e poi navighiamo nella libreria Library -&gt; Cocoa -&gt; Views &amp; Cells -&gt; Inputs &amp; Values.</p>
<p>Prendiamo l&#8217;oggetto NSTextField e trasciniamolo nella finestra di Currency Converter, IB ci guiderà nel corretto posizionamento del campo in alto a destra mostrandoci delle linee guida quando ci avviciniamo ai bordi della finestra.</p>
<div id="attachment_612" class="wp-caption aligncenter" style="width: 354px"><a href="http://www.slweb.it/wp/wp-content/uploads/2009/10/linee_guida.jpg"><img class="size-full wp-image-612" title="IB e le linee guida" src="http://www.slweb.it/wp/wp-content/uploads/2009/10/linee_guida.jpg" alt="Avvicinandosi ai bordi e ad altri oggetti IB mostra delle comode linee guida per allineare e distanziare correttamente gli oggetti" width="344" height="177" /></a><p class="wp-caption-text">Avvicinandosi ai bordi e ad altri oggetti IB mostra delle comode linee guida per allineare e distanziare correttamente gli oggetti</p></div>
<p>Allunghiamo il campo appena aggiunto per portarlo intorno ai 150 pixel di lunghezza. Con il campo selezionato premiamo Ctrl-D per duplicarlo. Posizioniamo il campo duplicato immediatamente sotto il precedente sfruttando sempre le solite linee guida. Ripetiamo l&#8217;operazione per il terzo campo.</p>
<p>Aggiungiamo ora le etichette che indicano cosa sono i tre campi che abbiamo appena aggiunti. Prendiamo una label dalla Library e posizioniamola a sinistra del primo campo di testo. Nell&#8217;ispector negli attributi della label impostate l&#8217;allineamento a destra e il titolo della label &#8220;Exchange Rate per €1:&#8221;. Stiamo facendo l&#8217;applicazione in inglese come nel tutorial perché poi proveremo a creare la localizzazione in italiano.</p>
<p>Ridimensioniamo la label in modo che compaia tutto il testo. Ripetiamo per le altre due label &#8220;Euro to convert&#8221; e &#8220;Amount in Other Currency:&#8221;</p>
<div id="attachment_613" class="wp-caption aligncenter" style="width: 410px"><a href="http://www.slweb.it/wp/wp-content/uploads/2009/10/finestra_stato_1.jpg"><img class="size-full wp-image-613" title="La finestra con i campi" src="http://www.slweb.it/wp/wp-content/uploads/2009/10/finestra_stato_1.jpg" alt="Adesso la finestra di Currency Converter dovrebbe essere così" width="400" height="222" /></a><p class="wp-caption-text">Adesso la finestra di Currency Converter dovrebbe essere così</p></div>
<p>Per concludere dobbiamo impostare l&#8217;attributo Editable del 3° TextField su false in modo che l&#8217;utente non possa cambiare il valore del campo. Selezioniamo quindi il 3° TextField e nell&#8217;ispector visualizziamo gli attributi e deselezioniamo Editable. Lasciamo invece selezionato Selectable per permettere la selezione e il copia del valore.</p>
<p><strong>Inseriamo e configuriamo il pulsante.</strong></p>
<p>Dalla Library prendiamo nella sezione Buttons un PushButton e posizioniamolo al di sotto del 3° campo di testo. Spostiamolo un pò più giu. Doppio Click sul pulsante appena aggiunto per modificare il titolo in &#8220;Convert&#8221;. Inseriamo un linea di separazione fra il bottone e i campi di testo. Come al solito la prendiamo dalla Library e l&#8217;allineiamo tramite le linee guida subito sotto il 3° campo di testo, allunghiamola a destra e sinistra fin quando non compaiono le linee guida. Posizioniamo il pulsante convert subito al di sotto del separatore sempre usufruendo delle guide automatiche. Seguire queste guide automatiche è importantissimo perché sono gli spazi raccomandati dalla guida Apple Human Interface Guidelines. La Apple Human Interface Guidelines è veramente una sorta di testo sacro sull&#8217;interfaccia grafica del mac e dovrebbe assolutamente essere letta e studiata per comprendere a fondo come realizzare un&#8217;interfaccia in perfetto stile Apple.</p>
<p><strong>Rifiniamo la nostra interfaccia</strong></p>
<p>Possiamo rifinire l&#8217;interfaccia appena creata sfruttando qualche funzionalità di IB. Selezioniamo tutte e 3 le Label e clicchiamo sul menu Layout &gt; Size to fit per dimensionare le Label alla loro larghezza minima. Clicchiamo poi sempre su Layout &gt; Alignment &gt; Align Right Edges per allineare le Label sull&#8217;angolo destro. Spostiamo infine le Label sulla sinistra fin quando non appare la linea guida. Selezioniamo e spostiamo a sinistra i 3 Text Field fin quando non compare la linea guida. Dimensioniamo ora nuovamente il Separatore per farlo coincidere con il lato destro dei Text Field. Spostiamo il pulsante per centrarlo con l&#8217;ultimo Text Field. Ridimensioniamo la finestra fin quando non compaiono tutte le linee guida. Ok l&#8217;interfaccia è ottimizzata più facile a farsi che a dirsi.</p>
<div id="attachment_615" class="wp-caption aligncenter" style="width: 377px"><a href="http://www.slweb.it/wp/wp-content/uploads/2009/10/finestra_stato_fiita.jpg"><img class="size-full wp-image-615" title="La finestra finita" src="http://www.slweb.it/wp/wp-content/uploads/2009/10/finestra_stato_fiita.jpg" alt="La finestra di Currency Converter finita" width="367" height="197" /></a><p class="wp-caption-text">La finestra di Currency Converter finita</p></div>
<p>Ultima chicca impostiamo il tasto return come Key Equivalent per premere il pulsante. Selezioniamo il pulsante e andiamo negli attributi, selezioniamo l&#8217;attributo Key Equiv. e premiamo il tasto return.</p>
<p><strong>Abilitiamo il Tabbing fra i campi di testo</strong></p>
<p>Vogliamo fare in modo che premendo il tatso Tab si passi da un campo all&#8217;altro. Per far ciò selezioniamo il campo Exchange Rate e tenendo premuto il tasto Ctrl clicchiamo e tiriamo un collegamento fino al campo Euro to convert. Nella pannello semitrasparente selezioniamo nel gruppo Outlets  &#8221;nextKeyView&#8221;. Ripetiamo la procedura all&#8217;inverso.</p>
<p><strong>Impostiamo il First Responder</strong></p>
<p>Impostiamo Exchange Rate come primo campo selezionato all&#8217;avvio dell&#8217;applicazione. Per far ciò dobbiamo selezionare l&#8217;istanza della nostra finestra nella finestra MainMenu.nib  e tenendo premuto il tasto Ctrl creare una connessione con il campo Exchange Rate per €1. Nel pannello che appare selezioniamo &#8220;initialFirstResponder&#8221;.</p>
<p>Bene ora la nostra interfaccia è pronta possiamo salvare e testare l&#8217;interfaccia attraverso il menu File &gt; Simulate Interface.</p>
<p>Nella prossima parte realizzeremo il Controller, cioè il ponte fra l&#8217;interfaccia (View) e il Model.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.slweb.it/wp/23102009/studiando-cocoa-currency-converter-parte-2%c2%b0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

