{"id":747,"date":"2009-11-12T17:00:52","date_gmt":"2009-11-12T16:00:52","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=747"},"modified":"2011-03-01T15:49:16","modified_gmt":"2011-03-01T14:49:16","slug":"t007-sfruttiamo-la-fotocamera-delliphone","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/t007-sfruttiamo-la-fotocamera-delliphone\/","title":{"rendered":"T#007 &#8211; Sfruttiamo la fotocamera dell&#8217;iPhone"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2009\/11\/t007IS.jpg\" alt=\"t007IS\" title=\"t007IS\" width=\"80\" height=\"120\" class=\"alignleft size-full wp-image-762\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2009\/11\/t007IS.jpg 320w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2009\/11\/t007IS-200x300.jpg 200w\" sizes=\"auto, (max-width: 80px) 100vw, 80px\" \/> Con questo tutorial vedremo come sfruttare la fotocamera dell&#8217;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 &#8220;View-based Application&#8221; dall&#8217;elenco dei template disponibili e proseguiamo. Scegliamo nome (ad esempio myPhoto) e posizione dove salvare il nostro progetto e andiamo avanti. Apriamo &#8220;myPhotoViewController.h&#8221; e impostiamo i due protocolli &#8220;UIImagePickerControllerDelegate, UINavigationControllerDelegate&#8221;.<!--more--> Dichiariamo un oggetto di tipo UIImageView e chiamiamolo imageView, dichiariamo infine i 3 metodi che ci permetteranno di eseguire le nostre scelte all&#8217;interno dell&#8217;applicazione. Il codice del file di interfaccia dovrebbe essere come segue:<\/p>\n<pre lang=\"objc\" escaped=\"true\">\r\n#import <UIKit\/UIKit.h>\r\n\r\n@interface myPhotoViewController : UIViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate> {\r\n\tIBOutlet UIImageView *imageView;\r\n}\r\n\r\n- (void)acquisisciFoto:(id)sender;\r\n- (void)rullinoFotografico:(id)sender;\r\n- (void)photoAlbum:(id)sender;\r\n\r\n@end\r\n<\/pre>\n<p>Apriamo Interface Builder facendo doppio click sul file &#8220;myPhotoViewController.xib&#8221; e disegnamo la nostra interfaccia grafica. Inserite un UIImageView e 3 UIButton e modifichiamo le loro propriet\u00e0 in modo da ottenere una vista simile a quella rappresentata in figura qui sotto:<\/p>\n<p><center><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2009\/11\/t007IB.jpg\" alt=\"t007IB\" title=\"t007IB\" width=\"320\" height=\"502\" class=\"aligncenter size-full wp-image-753\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2009\/11\/t007IB.jpg 320w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2009\/11\/t007IB-191x300.jpg 191w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><br \/>\n<\/center><\/p>\n<p>Per una corretta visualizzazione delle immagini durante l&#8217;esecuzione, settiamo l&#8217;attributo &#8220;Mode&#8221; della UIImageView in modalit\u00e0 &#8220;Aspect Fit&#8221;. 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&#8217;opzione &#8220;Touch Up Inside&#8221; per gli UIButton.<\/p>\n<p><center><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2009\/11\/t007_ImageProp.jpg\" alt=\"t007_ImageProp\" title=\"t007_ImageProp\" width=\"287\" height=\"444\" class=\"aligncenter size-full wp-image-754\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2009\/11\/t007_ImageProp.jpg 287w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2009\/11\/t007_ImageProp-193x300.jpg 193w\" sizes=\"auto, (max-width: 287px) 100vw, 287px\" \/><br \/>\n<\/center><\/p>\n<p>Possiamo salvare, chiudere IB e tornare ad Xcode. Apriamo il file di implementazione &#8220;myPhotoViewController.m&#8221; e scriviamo il codice dei metodi dichiarati precedentemente:<\/p>\n<pre lang=\"objc\" escaped=\"true\">\r\n- (void)acquisisciFoto:(id)sender{\r\n\tUIImagePickerController *picker = [[UIImagePickerController alloc] init];\r\n\t[picker setDelegate:self];\r\n\t[picker setAllowsEditing:YES];\r\n\tpicker.sourceType = UIImagePickerControllerSourceTypeCamera;\r\n\t[self presentModalViewController:picker animated:YES];\r\n\t[picker release];\r\n}\r\n\r\n- (void)rullinoFotografico:(id)sender{\r\n\tUIImagePickerController *picker = [[UIImagePickerController alloc] init];\r\n\t[picker setDelegate:self];\r\n\t[picker setAllowsEditing:YES];\r\n\tpicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;\r\n\t[self presentModalViewController:picker animated:(YES)];\r\n\t[picker release];\r\n}\r\n\r\n- (void)photoAlbum:(id)sender{\r\n\tUIImagePickerController *picker = [[UIImagePickerController alloc] init];\r\n\t[picker setDelegate:self];\r\n\t[picker setAllowsEditing:YES];\r\n\tpicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;\r\n\t[self presentModalViewController:picker animated:(YES)];\r\n\t[picker release];\t\r\n}\r\n\r\n- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {\r\n\t[imageView setImage:image];\r\n\t[picker dismissModalViewControllerAnimated:YES];\r\n}\r\n\r\n-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {\r\n\t[picker dismissModalViewControllerAnimated:YES];\r\n}\r\n<\/pre>\n<p>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 &#8220;AllowsEditing&#8221; a YES e decidere da dove deve essere prelevata la foto. Proprio qui troviamo l&#8217;unica differenza dei tre metodi. Useremo infatti &#8220;UIImagePickerControllerSourceTypeCamera&#8221; per avviare la fotocamera pronta a scattare una nuova foto, &#8220;UIImagePickerControllerSourceTypeSavedPhotosAlbum&#8221; per scegliere una fotografia dal Rullino Fotografico o &#8220;UIImagePickerControllerSourceTypePhotoLibrary&#8221; per sceglierla dal Photo Album. Avviamo quindi il &#8220;ModalViewController&#8221; e rilasciamo l&#8217;oggetto.<\/p>\n<p>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&#8217;operazione, di nascondere semplicemente tutto e tornare alla vista senza alcuna immagine importata.<\/p>\n<p>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&#8217;applicazione sul vostro iPhone.<\/p>\n<p>Ecco un&#8217;anteprima dell&#8217;applicazione in esecuzione:<\/p>\n<p><center><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2009\/11\/t007IS.jpg\" alt=\"t007IS\" title=\"t007IS\" width=\"320\" height=\"480\" class=\"aligncenter size-full wp-image-762\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2009\/11\/t007IS.jpg 320w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2009\/11\/t007IS-200x300.jpg 200w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><br \/>\n<\/center><\/p>\n<p><center><\/p>\n<h4>Video Tutorial<\/h4>\n<p> by David Pollak<br \/>\n<\/center><\/p>\n<p><center><br \/>\n<object width=\"480\" height=\"385\"><param name=\"movie\" value=\"http:\/\/www.youtube.com\/v\/uOcrK5sjNWY&#038;hl=it_IT&#038;fs=1&#038;\"><\/param><param name=\"allowFullScreen\" value=\"true\"><\/param><param name=\"allowscriptaccess\" value=\"always\"><\/param><embed src=\"http:\/\/www.youtube.com\/v\/uOcrK5sjNWY&#038;hl=it_IT&#038;fs=1&#038;\" type=\"application\/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\"480\" height=\"385\"><\/embed><\/object><br \/>\n<\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Con questo tutorial vedremo come sfruttare la fotocamera dell&#8217;iPhone, e le classi inerenti offerte da Apple, per&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[41,5,4,1,23],"class_list":["post-747","post","type-post","status-publish","format-standard","hentry","category-tutorial-pratici","tag-fotocamera","tag-objective-c","tag-programmazione","tag-tutorial-pratici","tag-xcode"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/747","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\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=747"}],"version-history":[{"count":20,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/747\/revisions"}],"predecessor-version":[{"id":6011,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/747\/revisions\/6011"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=747"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}