Quick Tip: Fare e salvare nel rullino uno screenshot via codice iPhone/iPad

Nel quick tip di oggi ti mostrerò come “fare” gli screenshots dalla tua applicazione iOS a livello di codice. Ci sono diversi modi per farlo, ma vi mostrerò il codice fornito da Apple nell’ultimo aggiornamento dell’SDK.

Screenshot_home_power

Per catturare una schermata (screenshot) abbiamo bisogno di aggiungere il frameworks Quartz Core al progetto seguendo la solito procedura per XCode 4 già vista in passato.

Ed ecco la funzione da aggiungere al nostro ViewController:

[code lang=”obj-c”]

-(void)scattaIstantanea:(CGSize)dimensioni{

UIGraphicsBeginImageContext(dimensioni);

[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];

UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

UIImageWriteToSavedPhotosAlbum(viewImage, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);

}

[/code]

Come avrete notato nell’ultima riga, la funzione che effettivamente salverà lo screenshot nel rullino abbiamo settato un parametro (altrimenti nil) che richiamerà il metodo una volta terminato il salvataggio. In quel metodo possiamo controllare se sono avvenuti eventuali errori di salvataggio oppure se tutto ha avuto successo.

[code lang=”obj-c”]
– (void)image: (UIImage *) image didFinishSavingWithError: (NSError *) error contextInfo: (void *) contextInfo{

if (!error) {

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Fatto!" message:@"Screenshot salvato nel Rullino fotografico" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];

[alert show];

[alert release];

}

}
[/code]

Anche se non usi tutti i parametri messi a disposizione ricorda che l’intestazione dovrà avere la stessa forma altrimenti si avranno dei crash nell’applicazione senza nessun errore significativo.

Richiamate il tutto da un pulsante ed avrete fatto!

[code lang=”obj-c”]

– (IBAction)screen:(id)sender {

[self scattaIstantanea:self.view.bounds.size];

}

[/code]

Come vedi il codice è molto semplice. Abbiamo inoltre aggiunto un UIAlertView che viene mostrato dopo la pressione del tasto e ci informa che lo screenshot è stato correttamente salvato.

Potete salvare e provare il programma sull’iPhone Simulator o direttamente sul vostro dispositivo ovviamente potrete verificare la presenza dell’immagine catturata sul vostro “Rullino fotografico”.