T#007 – Sfruttiamo la fotocamera dell’iPhone
Con questo tutorial vedremo come sfruttare la fotocamera dell’iPhone, e le classi inerenti offerte da Apple, per prelevare una foto dal Rullino Fotografico, dalla libreria di foto o direttamente acquisendola con un nuovo scatto, per poterla poi utilizzare nella nostra applicazione come meglio crediamo. Apriamo Xcode, selezioniamo “View-based Application” dall’elenco dei template disponibili e proseguiamo. Scegliamo nome (ad esempio myPhoto) e posizione dove salvare il nostro progetto e andiamo avanti. Apriamo “myPhotoViewController.h” e impostiamo i due protocolli “UIImagePickerControllerDelegate, UINavigationControllerDelegate”. Dichiariamo un oggetto di tipo UIImageView e chiamiamolo imageView, dichiariamo infine i 3 metodi che ci permetteranno di eseguire le nostre scelte all’interno dell’applicazione. Il codice del file di interfaccia dovrebbe essere come segue:
#import <UIKit/UIKit.h> @interface myPhotoViewController : UIViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate> { IBOutlet UIImageView *imageView; } - (void)acquisisciFoto:(id)sender; - (void)rullinoFotografico:(id)sender; - (void)photoAlbum:(id)sender; @end
Apriamo Interface Builder facendo doppio click sul file “myPhotoViewController.xib” e disegnamo la nostra interfaccia grafica. Inserite un UIImageView e 3 UIButton e modifichiamo le loro proprietà in modo da ottenere una vista simile a quella rappresentata in figura qui sotto:

Per una corretta visualizzazione delle immagini durante l’esecuzione, settiamo l’attributo “Mode” della UIImageView in modalità “Aspect Fit”. Colleghiamo quindi gli oggetti appena creati con quelli dichiarati da codice. UIImageView con imageView e i 3 pulsanti con i rispettivi metodi. Ricordate di scegliere l’opzione “Touch Up Inside” per gli UIButton.

Possiamo salvare, chiudere IB e tornare ad Xcode. Apriamo il file di implementazione “myPhotoViewController.m” e scriviamo il codice dei metodi dichiarati precedentemente:
- (void)acquisisciFoto:(id)sender{ UIImagePickerController *picker = [[UIImagePickerController alloc] init]; [picker setDelegate:self]; [picker setAllowsEditing:YES]; picker.sourceType = UIImagePickerControllerSourceTypeCamera; [self presentModalViewController:picker animated:YES]; [picker release]; } - (void)rullinoFotografico:(id)sender{ UIImagePickerController *picker = [[UIImagePickerController alloc] init]; [picker setDelegate:self]; [picker setAllowsEditing:YES]; picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; [self presentModalViewController:picker animated:(YES)]; [picker release]; } - (void)photoAlbum:(id)sender{ UIImagePickerController *picker = [[UIImagePickerController alloc] init]; [picker setDelegate:self]; [picker setAllowsEditing:YES]; picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; [self presentModalViewController:picker animated:(YES)]; [picker release]; } - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo { [imageView setImage:image]; [picker dismissModalViewControllerAnimated:YES]; } -(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker { [picker dismissModalViewControllerAnimated:YES]; }
I primi 3 metodi sono praticamente identici, non facciamo altro che creare un oggetto di tipoUIImagePickerController, settare il suo delegato a self, impostare il suo metodo “AllowsEditing” a YES e decidere da dove deve essere prelevata la foto. Proprio qui troviamo l’unica differenza dei tre metodi. Useremo infatti “UIImagePickerControllerSourceTypeCamera” per avviare la fotocamera pronta a scattare una nuova foto, “UIImagePickerControllerSourceTypeSavedPhotosAlbum” per scegliere una fotografia dal Rullino Fotografico o “UIImagePickerControllerSourceTypePhotoLibrary” per sceglierla dal Photo Album. Avviamo quindi il “ModalViewController” e rilasciamo l’oggetto.
Gli ultimi due metodi servono per impostare la foto e nascondere il ModalViewController se abbiamo deciso di importare la foto o, nel caso in cui volessimo annullare l’operazione, di nascondere semplicemente tutto e tornare alla vista senza alcuna immagine importata.
Possiamo a questo punto salvare e testare la nostra applicazione, che su iPhone Simulator, se decidessimo di scattare una foto, si chiuderebbe inaspettatamente non essendo presente una fotocamera da poter utilizzare durante il test. Per provare tutte le funzioni consiglio quindi di installare direttamente l’applicazione sul vostro iPhone.
Ecco un’anteprima dell’applicazione in esecuzione:

Video Tutorial
by David Pollak

















Come posso integrare uesto codice per realizzare un applicazione che invii e-mail con allegati?