2010-09-14 23 views
14

Ho bisogno di creare un'istantanea o uno screenshot - chiamalo come preferisci- della vista corrente e quindi visualizzarla nella vista modale.[iOS] Come creare una "istantanea" dello stato attuale della vista

Perché se ho appena scritto questo in vista del regolatore del ModalView

MyAppViewController *viewController = [[MyAppViewController alloc] init]; 
self.view = viewController.view; 

Tutti i metodi della MyAppViewController sono chiamati così, ma io non ne hanno bisogno, ho solo bisogno di "salvare" tutto ciò che era sullo schermo quando è comparso ModalView e lo mostra nella vista di ModalView.

Come posso farlo? Grazie in anticipo!

+0

Non sono sicuro di cosa significhi: "Anche tutti i metodi del MyAppViewController sono chiamati". Una risposta che sembra troppo ovvia per me sarebbe semplicemente creare una nuova classe con solo gli elementi di cui hai bisogno. Sicuramente non capisco abbastanza bene il problema. –

+0

La mia app è un gioco. E quando l'utente tocca un pulsante specifico appare un controller di visualizzazione modale e deve visualizzare la vista del gioco nello stato che era appena prima che il pulsante fosse toccato. Quindi i mostri che sono stati uccisi dovrebbero essere morti ecc. Ma se uso il codice dal primo post, sembra che il gioco sia appena iniziato – Knodel

+0

hai bisogno di uno screenshot di un'immagine piatta, o stai cercando di salvare lo stato attuale del gioco . – Bongeh

risposta

34

vorrei suggerire di fare questo:

hanno un metodo che crea un'immagine fuori il contenuto della vista.

-(UIImage*) makeImage { 

UIGraphicsBeginImageContext(self.view.bounds.size); 

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

UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

return viewImage; 
} 

Creare un metodo init personalizzato per la tua vista modale, e anche dare il vostro modalView una variabile di istanza che può contenere un UIImage qualcosa di simile ...

- (id)initWithImage:(UIImage *)temp { 
    myImage = temp; 
} 

Poi, nel tuo modalView, forse nel metodo viewDidLoad, creare UIImageView e impostare l'immagine su myImage

Si spera che ciò ottenga ciò che si sta tentando di fare.

+0

Grazie! Proverò questo – Knodel

+0

Sì! Questo è esattamente ciò di cui ho bisogno! Grazie mille! – Knodel

+0

il benvenuto :) – Bongeh

12

In iOS 7, è possibile utilizzare uno dei nuovi metodi in UIView per la creazione di snapshot, per esempio:

- (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates; 

che restituisce un UIView che è quindi possibile aggiungere come una visualizzazione secondaria.

0
UIView *viewSnapShop = [self snapshotViewAfterScreenUpdates:NO]; 
Problemi correlati