Abbonati al feed RSS!
twitter
  •  

DevTutorial #3 – TrashApp

|
Categorie: DevTutorial, iPhone SDK

3

In questa “terza puntata” realizzeremo una’applicazione che ci darà un’infarinatura sulla gestione delle immagini. Vedremo, infatti, come creare un finto cestino, in cui potremo trascinare un documento, e da cui potremo ripristinare il file eliminato. Ovviamente non andremo a toccare veri file salvati sul nostro dispositivo, si tratterà di una semplice animazione.

1. Creiamo un nuovo progetto
Aprimo Xcode, selezioniamo “File -> New Project”. Nel menù che ci appare selezioniamo “Window-Based Application”, clicchiamo su “Choose…” e immettiamo come nome “TrashApp” e fate clic su “Save”. Abbiamo così creato il nostro nuovo progetto.

Immagine 1

2. Aggiungiamo i componenti grafici
Nella cartella del progetto entrate in “Resources” e fate doppio clic sul file “MainWindow.xib”, si aprirà l’Interface Builder. Ora, aprite la Libreria (dal menù “Tools -> Library”), scegliete l’oggetto “View” e trascinatelo all’interno della vista della vostra applicazione. Dovreste avere una schermata come questa:

Immagine 2

Ora dobbiamo sistemare le parti grafiche della nostra applicazione. Per prima cosa ci servono due immagini per il nostro cestino, una con il cestino vuoto e una con il cestino pieno. Eccovele, ovviamente in puro stile Mac (potete benissimo utilizzare altre immagini a vostro piacimento):

TrashIconEmpty TrashIconFull

Ora ci serve un qualcosa da eliminare. Un foglio, un documento o, visto che siamo in ambiente Mac.. un logo di Windows!! Eccovi quindi il file in questione:

windows icon

Dobbiamo, adesso, assemblare il tutto all’interno della nostra applicazione. Salvate le immagini che vi abbiamo postato e copiatele all’interno della cartella del vostro progetto. Avrete quindi una cartella così composta:

Immagine 3

Ora, tenendo aperta la finestra del Finder, trascinate le tre immagini nel vostro progetto in Xcode, vi apparirà la seguente finestra:

Immagine 4

Fate click su “Add”, assicurandovi che ci sia la spunta accando al progetto “TrashApp”. Vedrete così le tre immagini comparire nel vostro progetto.
Tornate ora in Interface Builder e aggiungete alla vostra vista due componenti “UIImageView” e un “Round Rect Button”, in modo da avere un layout simile a questo:

Immagine 5

ATTENZIONE: assicuratevi che la prima UIImageView che inserite vada nella posizione in basso, altrimenti avrete dei problemi nelle fasi successive del tutorial.

Ora dobbiamo collegare i vari componenti alle immagini che abbiamo appena scaricato. Clicchiamo sul primo componente UIImageView (quello più in alto, ma il secondo che avete inserito!), apriamo il pannello “Attributes Inspector” dal menu “Tools”. Nel menù a tendina “Images” selezioniamo il file “windows icon.png”, e lo vedremo comparire anche nell’applicazione. Spuntiamo, inoltre, la casella “User Interaction Enabled”. Avremo un pannello così impostato:

Immagine 6

Facciamo la stessa cosa per la UIImageView sottostante, selezionando come immagine “TrashIconEmpty.png”, ma senza spuntare “User Interaction Enabled”.
Inseriamo all’interno del bottone la scritta “Ripristina”, aggiustiamo le dimensioni e la posizione delle due immagini fino ad avere un risultato come questo:

Immagine 7

3. Colleghiamo gli oggetti con le azioni
Per ora non abbiamo definito nessuna azione, ci siamo limitati ad aggiungere i componenti grafici che ci serviranno. Vediamo di colmare queste lacune.

Sempre in Interface Builder cliccate sullo sfondo dell’applicazione, e dalla finestra “Attribute Inspector” entrate nella sezione “View Identity”.
Nel campo “Class” scrivete “MainView”, nella sezione “Class Outlets” fate due clic sul pulsante “+” per aggiungere due elementi. Il primo rinominatelo in “paperView”, il secondo in “trashView”, e in entrambi i tipi inserite “UIImageView”. Cliccate, poi, sul “+” della sezione “Class Actions”, rinominando il nuovo elemento in “restore:”.
Dovreste avere, quindi, una schermata come questa:

Immagine 8

Ora dobbiamo connettere gli elementi con le azioni appena create. Andiamo nella scheda “Connections” (sempre in “Attribute Inspector”), vedremo i due elementi (paperView e trashView) che abbiamo appena creato. Clicchiamo sul pallino che troviamo a fianco e trasciniamo paperView sul logo di Windows, mentre trashView sull’immagine del cestino. Dovremmo avere questo risultato:

Immagine 9

Clicchiamo, ora, sul pulsante della nostra applicazione, e, sempre in “Attribute Inspector” andiamo ancora nella sezione “Connections”. Troviamo la voce “Touch Up Inside” e trasciniamo il pallino sullo sfondo della nostra applicazione. Si aprirà questo piccolo menù:

Immagine 10

clicchiamoci e vedremo che verrà creata la connessione.

Immagine 11

Salviamo il tutto dal menù “File -> Save”. Controlliamo che la classe “Main View” sia selezionata, facendo clic sullo sfondo dell’applicazione e, nella scheda Identity, assicuriamoci di vedere “Main View” dove lo abbiamo scritto noi in precedenza.

Ora dobbiamo salvare questa classe nel nostro progetto. Dal menù “File” selezioniamo “Write Class Files”. Si aprirà una finestra in cui dovremo selezionare il percorso del nostro progetto, poi la cartella “Classes” e infine fare clic su “Save”.

Immagine 12

Nella schermata che apparirà subito dopo selezioniamo il nostro progetto “TrashApp” e poi clicchiamo su “Add”.

Immagine 13

Ora possiamo chiudere l’Interface Builder e tornare ad Xcode.

4. Aggiungiamo la gestione dello spostamento del logo
Vedremo che la classe “Main View” che abbiamo appena salvato è presente nel progetto. Prendiamo i due file (uno con estensione “.h”, l’altro “.m”) e trasciniamoli nella sottocartella Classes.

Immagine 14

Adesso inziamo a inserire un po’ di codice. Entrate nel file “MainView.h” e rendetelo così:

Immagine 15

Ora apriamo il file “MainView.m”. Dobbiamo implementare la funzione che gestirà l’applicazione quando l’utente toccherà il logo di Windows che vorrà eliminare. Per fare ciò dobbiamo implementare il metodo “touchesMoved”. Per chi volesse vedere la documentazione ufficiale, non deve far altro che andare nel menù “Help -> Documentation” e cercare il metodo appena presentato.
Dovremo aggiungere, inoltre, il metodo “touchesEnded”. Il codice sarà quindi così fatto:

Immagine 16

Cosa facciamo con il primo metodo? Semplice. Salviamo nella variabile “touch” l’evento che l’utente compie toccando un qualsiasi oggetto della nostra applicazione. Controlliamo, poi, che l’oggetto toccato corrisponda a “paperView”, cioè al logo di Windows: se l’oggetto è proprio quello, teniamo il centro dell’oggetto (che nel frattempo viene mosso dall’utente) con la posizione del dito sullo schermo. Ovvero, è come se spostassimo fisicamente l’oggetto con il nostro dito e lo muovessimo su un piano.

Proviamo a cliccare su “Build and Go”: l’applicazione partirà e noi potremo trascinare per tutto lo schermo il logo di Windows. Come possiamo subito notare, se passiamo il logo sopra il cestino non succede niente, così come il pulsante “Ripristina” non ha nessun effetto. Vediamo di aggiungere, quindi, le funzionalità mancanti.

5. Implementiamo l’effetto “cancellazione”
Dobbiamo, ora, aggiungere una funzione che permetta di eliminare il logo di Windows quando esso passa sopra il cestino. Iniziamo scrivendo il seguente codice nel file “MainView.m” (dobbiamo aggiungere il codice al metodo che abbiamo creato in precedenza):

Immagine 17

In questo metodo diciamo semplicemene che se il frame di paperView (ovvero il logo di Windows) è contenuto in quello del cestino, deve essere chiamato il metodo throwAway. Prima di chimaare tale metodo, inoltre, cambiamo l’immagine del cestino vuoto con quella del cestino pieno (caricandola dal file “TrashIconFull.png”).
Dobbiamo, quindi, definire proprio questo metodo. Aggiungiamo la dichiarazione nel file “MainView.h” nel seguente modo:

Immagine 18

Ora ritorniamo nel file “MainView.m” e scriviamo la seguente implementazione del metodo:

Immagine 19

In questo codice definiamo l’animazione che avrà il logo di Windows quando verrà sposato sopra il cestino, ovvero scomparirà.

Ora dobbiamo solo aggiungere un framework al nostro progetto, altrimenti otteremo due errorei in fase di compilazione. Per fare cio, cliccate con il tasto destro (oppure Ctrl + click) sulla cartella “Frameworks” del progetto, e ciccate su “Add -> Existing Frameworks”

Immagine 20

Nella finestra che vi si apre, navigate fino a questo percorso:

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/System/Library/Frameworks

Quando arrivate in quella cartella selezionate “CoreGraphics.framework” e cliccate su “Add”. Nella finestra successiva assicuratevi di spuntare il progetto in cui siamo lavorando:

Immagine 21

Ora clicchiamo su “Build and Go” e proviamo la nostra applicazione. Se trasciniamo il logo di Windows sul cestino esso scompare!
Nota: se non avete questa animazione, controllate due cose. La prima è che il logo di Windows non si nasconda dietro il cestino. Se così fosse, non avete seguito quello che vi ho detto nella costruzione dell’Interfaccia!! Ma non ndisperate, vi basterà entrare in Interface Builder e scambiare l’ordine dei due componenti (ovviamente invertendo anche le immagini e le proprietà associate). La seconda, invece, che la dimesione del logo (sempre in Interface Builder) e del componente UIImageView non sia maggiore di quella del cestino, altrimenti il controllo che abbiamo scritto nel metodo “touchesEnded” fallisce e non viene lanciata l’animazione. Anche in questo caso ci basta entrare in Interface Builder e ridimensionare il componente UIImageView.

6. Aggiungiamo la funzione al tasto “Ripristina”
Ora non ci resta che aggiungere al funziona al bottone “Rispristina”, che per ora non esegue nessuna azione. Dobbiamo solo implementare il metodo “restore”, che dovreste già trovare dichiarato nel file “MainView.m”. Il codice da aggiungere è il seguente:

Immagine 22

Cosa esegua questo metodo si può inture facilmente. Eseguiamo un’animazione inversa rispetto a quella dell’eliminazione del logo, riportando l’immagine alla sua posizione originale (che fissiamo noi), e torniamo a cambiare immagine del cestino, questa volta rimettendo quella del cestino vuoto.

Clicchiamo ora su “Build and Go” e gustiamoci la nostra nuova applicazione funzionante!

Immagine 23

Se Avete Problemi, questo è il file di progetto.

La guida è stata creata in italiano da Andrea Busi per “iSpazio.net” e “The Bubi Devs”. Trovare il video tutorial originale a questo indirizzo: TrashTutorial – iPhone DevCentral. I meriti quindi relativamente alla versione inglese, sono del legittimo autore.

1.756 visite

Commenti (3)

Reply to this comment

ciao… volevo sapere se c’è un modo per portare un immagine in primo piano da codice

Reply to this comment

[...] al quarto tutorial dei “DevTutorial”. Nella scorsa puntata ci siamo occupati della gestione delle immagini, di come muoverle e come creare un’animazione [...]

Reply to this comment

Perchè invertendo la posizione delle 2 UIView il programma non funziona? (si muove il pallinio ma non scompare).
So che basta non farlo, ma facendolo si può rimediare ?
grazie e complimenti per il libro

Scrivi un commento!