• Programmazione Android
  • CORSI ONLINE
  • Web Agency

Logo

Corsi di programmazione web e mobile online
Navigation
  • Home
  • CORSI ONLINE
  • Tutorial Pratici
  • GUIDE COMPLETE
    • Corso completo di C
    • Corso videogame con Cocos2d
    • Programmazione Cocoa Touch
  • Sezioni
    • Libri e manuali
    • Tips & Tricks
    • Risorse utili
    • Strumenti di Sviluppo
    • Materiale OpenSource
    • Framework
    • Guide Teoriche
    • Guide varie
    • Grafica e Design
    • iPad
    • News
    • Video Tutorial
    • Windows Phone
  • Pubblicità
  • About
    • Chi siamo
    • Pubblicazioni
    • Collabora
    • Sostieni devAPP

T#035 – Creare uno screenshot a runtime

By Redazione | on 19 Aprile 2010 | 9 Comments
Senza categoria

T035 - Screenshot esecuzione tutorial 035 - Screenshot a runtime Rispondiamo ad una richiesta di un nostro utente pubblicando questo interessante Tutorial di programmazione iPhone. Vi mostreremo come catturare con poche righe di codice un’istantanea (screenshot) della vostra App durante l’esecuzione del programma. Verrà quindi mostrata nell’app un’anteprima di quanto catturato e salvato lo screenshot direttamente nel “Rullino fotografico” del vostro iPhone. Partiamo subito con il nostro tutorial.

Apriamo Xcode, creiamo un nuovo progetto, dall’elenco dei template disponibili selezioniamo “View-based Application” e proseguiamo. Diamo un nome, ad esempio myScreenshot, decidiamo la posizione dove salvare e clicchiamo su “Save”.

Per prima cosa aggiungiamo il Framework “Quartz.Core”. Per farlo, clicchiamo col pulsante destro del mouse su “Frameworks” in “Groups & Files”, quindi su “Add” e infine su “Existing Frameworks…”. Nella finestra che si apre cercate e selezionate “Quartz.Core.framework” quindi cliccate su “Add”.

Apriamo quindi il file di intestazione “myScreenshotViewController.h” e modifichiamo il codice come segue:

#import 
#import 

@interface myScreenshotViewController : UIViewController {
	IBOutlet UIImageView *anteprimaScreenshot;
}

@property (nonatomic, retain) IBOutlet UIImageView *anteprimaScreenshot;

-(IBAction)scattaIstantanea;

@end

Come vedete abbiamo semplicemente importato il framework, dichiarato un oggetto “IBOutlet” di tipo “UIImageView” e di nome “anteprimaScreenshot” che useremo appunto come anteprima e infine abbiamo dichiarato un metodo (IBAction) di nome “scattaIstantanea” che collegheremo successivamente ad un UIButton creato tramite Interface Builder.

Salviamo e passiamo alla creazione della semplice interfaccia grafica. Apriamo Interface Builder facendo doppio click sul file “myScreenshotViewController.xib” e trasciniamo nella vista i seguenti oggetti:

  • N. 1 UIImageView
  • N. 1 UIButton

Se volete potete “abbellire” la vostra vista inserendo altri elementi a piacere, come abbiamo fatto noi, anche se superflui per il funzionamento di questo progetto. Quello che dovete ottenere è qualcosa di simile a quanto mostrato in figura qui in basso:


T035 - Interfaccia grafica tutorial 35 - Screenshot a runtime

Cliccate ora su “File’s Owner” e collegate gli oggetti appena creati, ai rispettivi oggetti e metodi creati precedentemente in Xcode. Collegate quindi “Image View” ad “anteprimaScreenshot” e il metodo “scattaIstantanea” al pulsante, facendo attenzione a selezionare “Touch Up Inside” al rilascio del mouse. Salviamo e chiudiamo Interface Builder.

Apriamo ora il file di implementazione “myScreenshotViewController.m” e andiamo a scrivere il codice vero r proprio che si occuperà di scattare lo screenshot, di mostrarlo in anteprima nell’UIImageView e di salvarlo nel “Rullino fotocamera” del nostro iPhone:

@synthesize anteprimaScreenshot;

-(void)alertDone {
	UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"OK" message:@"Screenshot salvato nel Rullino fotografico" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
	
;
; } -(IBAction)scattaIstantanea { UIGraphicsBeginImageContext(self.view.bounds.size); [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); UIImageWriteToSavedPhotosAlbum(viewImage, self, nil, nil); [anteprimaScreenshot setImage:viewImage]; [self alertDone]; }

Come vedete il codice è molto semplice. Abbiamo inoltre aggiunto un UIAlert 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 Simulatore o direttamente sul vostro dispositivo, il risultato è mostrato in figura, ovviamente potrete verificare la presenza dell’immagine catturata sul vostro “Rullino fotografico”:


T035 - Screenshot esecuzione tutorial 035 - Screenshot a runtime

Share this story:
  • tweet

Tags: Quartz.corescreenshotTutorial PraticiXcode

Recent Posts

  • Parte il percorso programmatori iOS in Swift su devACADEMY.it

    20 Dicembre 2017 - 0 Comment
  • Android, crittografare dati velocemente con Encryption

    24 Settembre 2018 - 0 Comment
  • Sql2o, accesso immediato ai database tramite Java

    3 Settembre 2018 - 0 Comment
  • Okio, libreria per ottimizzare l’input/output in Java

    27 Agosto 2018 - 0 Comment

Related Posts

  • Con Xcode 6.3 arriva il Crash Log Organizer

    26 Febbraio 2015 - 0 Comment
  • Xcode-project-generator: uno script per creare velocemente progetti Xcode

    21 Ottobre 2014 - 1 Comment
  • Xcode Tips & Tricks: Gestione del filesystem, un progetto più versioni, plugin

    12 Novembre 2013 - 4 Comments

Author Description

9 Responses to “T#035 – Creare uno screenshot a runtime”

  1. 19 Aprile 2010

    Ragazzetto

    Ganzo davvero 😉

  2. 19 Aprile 2010

    Gino

    Vorrei aggiungere poche righe per spiegare come salvarla all’interno della propria applicazione (nella directory documents):

    UIGraphicsBeginImageContext(self.view.frame.size);
    [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];

    //inizio creazione nome univoco es photo-333.png
    int randnum;
    srand((unsigned)time(0));
    randnum = (rand()%1000)+1;

    NSString *nomeImmagine = [[NSString alloc ]
    initWithFormat:@”photo-%d.png”, randnum];
    printf(“Nome immagine random: %s”, [nomeImmagine UTF8String]);

    //fine creazione nome univoco es photo-333.png
    // Now we get the full path to the file
    NSString *fullPathToFile = [documentsDirectory stringByAppendingPathComponent:nomeImmagine];

    printf(“Path completo file:’%s’ “, [fullPathToFile UTF8String]);

    [UIImagePNGRepresentation(viewImage) writeToFile:fullPathToFile atomically:YES];

    spero serva a qualcuno

  3. 19 Aprile 2010

    Alessandro Messineo

    Sarà anche ganzo ma forse poco utile.. Perché nn parlate dei plist, loro gestione e lettura/scrittura, dato che mi sto accorgendo che vengono sempre sommariamente accennati nei libri di programmazione per iPhone e sono invece largamente utilizzati per immagazziare dati ed informazioni da mettere in TableView o in textView? 🙂

    quella per me sarebbe una ganzata xD
    complimenti sempre e cmq per il lavoro che fate 😉

  4. 19 Aprile 2010

    Staff devAPP

    Alessandro Messineo :

    Sarà anche ganzo ma forse poco utile.. Perché nn parlate dei plist, loro gestione e lettura/scrittura, dato che mi sto accorgendo che vengono sempre sommariamente accennati nei libri di programmazione per iPhone e sono invece largamente utilizzati per immagazziare dati ed informazioni da mettere in TableView o in textView? :)

    quella per me sarebbe una ganzata xD
    complimenti sempre e cmq per il lavoro che fate ;)

    Grazie per i complimenti 🙂 L’utilità di questo tutorial, così come avviene per gli altri, è sicuramente differente per ognuno di noi. Questo, per esempio, è stato creato in risposta ad una particolare richiesta di un utente, per il quale sicuramente tornerà utile 😛

    Ad ogni modo vedremo di parlare a breve anche dei file .plist e di mille altre cosette che sono spesso fondamentali..

    purtroppo (o fortunatamente) le richieste che ci arrivano sono davvero tante.. in ogni caso, pian piano, faremo in modo di accontentare tutti

    Nel frattempo dateci una mano postando le vostre richieste nella sezione apposita del nostro forum, che gli autori potranno sfruttare per prendere spunti 🙂

  5. 19 Aprile 2010

    salvo

    volevo sapere se potete fare un tutorial di come fare una cecklist (come quelle per le figurine mancanti) e come far rimanere i dati salvati.
    grazie

  6. 12 Novembre 2010

    Paolo

    Ciao a tutti… Si riesce a fare uno screenshot anke metter l’applicazione e’ in background?

    Vorrei trasmettere quello k vedo in wifi sul iPad su un server remoto locale…

    Grazie
    Sempre ottime guide

  7. 14 Giugno 2011

    tommaso

    c’è un modo per scattare l’istantanea solo nell’area della imageview?

  8. 28 Novembre 2011

    Linda

    Salve!
    Vorrei sapere se è possibile realizzare una simile applicazione che piuttosto che essere avviata dall’utente, si avvii da sola (ad esempio attivandola all’accensione) ed effettui uno screenshot a intervalli regolari senza che all’utente venga notificato nulla…
    grazie!!!

  9. 29 Febbraio 2012

    Ragazzetto

    Domanda facile facile :
    c’è un sistema perché le immagini salvate sul rullino abbiano una risoluzione retina se l’ applicazione gira su un dispositivo con display retina ?
    con questo codice le immagini salvate sono di 320x 480 anche da iphone 4s !
    Grazie in anticipo !

Leave a Reply

Your email address will not be published. Required fields are marked *


*
*

Corso online di programmazione android e java

SEZIONI

  • Android
  • Comunicazioni
  • Contest
  • Corsi ed Eventi
  • Corso completo di C
  • Corso programmazione videogiochi
  • Framework
  • Grafica e Design
  • Guida rapida alla programmazione Cocoa Touch
  • Guide Teoriche
  • Guide varie
  • iPad
  • Le nostre applicazioni
  • Libri e manuali
  • Materiale OpenSource
  • News
  • Pillole di C++
  • Progetti completi
  • Risorse utili
  • Strumenti di Sviluppo
  • Swift
  • Tips & Tricks
  • Tutorial Pratici
  • Video Tutorial
  • Windows Phone

Siti Amici

  • Adrirobot
  • Allmobileworld
  • Apple Notizie
  • Apple Tribù
  • Avvocato360
  • Blog informatico 360°
  • bubi devs
  • fotogriPhone
  • GiovaTech
  • iApp-Mac
  • iOS Developer Program
  • iPodMania
  • MelaRumors
  • Meritocracy
  • SoloTablet
  • TecnoUser
  • Privacy & Cookie Policy
©2009-2018 devAPP - All Rights Reserved | Contattaci
devAPP.it è un progetto di DEVAPP S.R.L. - Web & Mobile Agency di Torino
Str. Volpiano, 54 - 10040 Leini (TO) - C.F. e P.IVA 11263180017 - REA TO1199665 - Cap. Soc. € 10.000,00 i.v.

devACADEMY.it

Vuoi imparare a programmare?

Iscriviti e accedi a TUTTI i corsi con un’unica iscrizione.
Oltre 70 corsi e migliaia di videolezioni online e in italiano a tua disposizione.

ISCRIVITI SUBITO